美文网首页Java
Java 方法、关键字、重载、覆写

Java 方法、关键字、重载、覆写

作者: 嘉美伯爵 | 来源:发表于2017-03-11 15:08 被阅读21次

命名要求

命名要求

方法

分为普通方法、构造方法、set/get方法
方法名前加两种类型,有返回值(8大数据类型),无返回值(void)

普通方法

在对象实例化时可以调用多次

public static void fun(){     //static为静态方法,可以不加
}

方法名称和类名称一致

set/get方法

class A1{
    private String name;
    public void setName(String name){
        this.name = name;
    }
    public String(返回类型) getName(){
        return this.name;
    }
}

set方法两种作用,修改内容和设置内容。set方法无返回值,用法public void set属性名(类 属性名){this.属性名 = 属性名},特别注意的是数组也属于java类,在get方法中格式为public 类名称 get属性名(类 属性名){return 属性名},需要注意的是在数组生命中格式为public 类名称[ ] get属性名(类 属性名){return 属性名}。注意[ ]

构造方法

在使用关键字new,实例化新对象时调用,而且此方法只可以调用一次。

class Book{
        public Book(){  //构造方法的方法名必须与类名一样
    }
}

static关键字

一、定义属性(用static定义属性,表示公有共享信息,若有一个修改了属性内容,则其他全部改变)

class Book{
    private String name ;
    private double price;
    static String pub = "beida";
    
    public Book(String name,double price){
        this.name = name;
        this.price = price;
        
    }
    
    public  String getInfo(){
        return "Name:"+this.name+" "+"Price:"+this.price+"Pub:"+this.pub;
    }   
}
public class Exten{
    public static void main(String []args){
        Book ba = new Book("Java",36.1);
        Book bb = new Book("Android",12.4);
        ba.pub = "qinghua";
        System.out.println(ba.getInfo());
        System.out.println(bb.getInfo());
    }
}
-------------------------------------------------
用static定义前后结果
F:\prac>java Exten
Name:Java Price:36.1Pub:qinghua
Name:Android Price:12.4Pub:beida

F:\prac>javac Exten.java

F:\prac>java Exten
Name:Java Price:36.1Pub:qinghua
Name:Android Price:12.4Pub:qinghua

static定义方法

this/super关键字

this/super 可调用方法、属性

| NO | 区别 | this |super|
| :--------: | :----: | :----: | :--------: | :----: | :----: |:
|1 | 区别 | 调用本类构造、本类方法、本类属性 |子类调用父类构造、方法、属性|
| 2 | 形式 | 先查找本类,若无查找父类 |不查找子类,直接调用父类|
|3 | 特殊 |表示本类当前对象 |~||

final

1、final定义的类不能有子类;

final class A{
}
class B extends A{ //错误
}

2、使用final定义的方法不能被子类所覆写;

final class A{
     public final void  fun(){   //注意final和void顺序,不可错
   }
}
class B extends A{ //错误
    public  void  fun(){
   }
}

3、使用final定义的变量就变成了常量,常量在定义的时候必须设置好内容,并不能被修改。
4、全局常量
常量全部大写STEDENTNAME,变量studentName,方法public void setName

public static final String MSG = "ff";

this.方法()/super.方法()

this.方法()会首先查找本类中的方法,若查找到直接调用,若查询不到则查询父类,有则调用,没有则编译报错(找不到此方法)。
super.()方法会直接查询父类,不会查询子类

class A{
    public void fun(){
        print();
    }
    public void print(){
        System.out.println("A");
    }
}
class B extends A{
    public void print(){
        super.print();    //this.print();
        System.out.println("B");
    }
}
public class Exten {
    public static void main(String [] args){
        B b = new B();
        b.fun();
    }
}

方法重载

方法的名称相同,参数的类型和个数不同。

public class Exten {
    public static void main(String args []){
        System.out.println(fun(3,5));
        System.out.println(fun(3,5,9));
        System.out.println(fun(3.1,5.6));
    }
    public static int fun(int x,int y){
        return x+y;
    }
    public static int fun(int x,int y,int z){
        return x+y+z;
    }
    public static double fun(double x,double y){    
    ----public static double fun(int x,int y)---错误,需一致
        return x+y;
    }
}

方法覆写(父类功能不足,而子类还必须使用,就会使用覆写)

1、观察实例化的是那一个类;
2、观察这个实例化的类里面调用的方法是否是已经被覆写过的,如果没覆写过则调用父类的。

//返回值一样,方法名相同,声明类型相同,数据类型相同,才为覆写
class A{
    public void fun(){
        System.out.println("A类中的方法");
    }
}
class B extends A{
    public void fun(){
        System.out.println("B类中的方法");
    }
}
class C extends A{
//Exten.java:12: 错误: C中的fun()无法覆盖A中的fun();
//若改为public String  fun()  ^ 返回类型String与void不兼容
    public void fun(){   
        System.out.println("C类中的方法");
    }
}
public class Exten {
    public static void main(String [] args){
        B b = new B();
        b.fun();
        C c = new C();
        c.fun();
    }
}

3、权限问题(public>默认>private)
子类不可以使用比父类更高的权限,使用后就不是覆写了

//覆写
class A{
    public void fun(){
        print();
    }
    public void print(){
        System.out.println("A");
    }
}
class B extends A{
    public void print(){
        System.out.println("B");
    }
}
public class Exten {
    public static void main(String [] args){
        B b = new B();
        b.fun();
    }
}
------------------------------------------------------
//非覆写
class A{
    public void fun(){
        print();
    }
    private void print(){
        System.out.println("A");
    }
}
class B extends A{
    public void print(){
        System.out.println("B");
    }
}
public class Exten {
    public static void main(String [] args){
        B b = new B();
        b.fun();
    }
}

属性覆写

基础父类

class Array{
    private int [] data;
    //private int len;
    private int foot;
    public Array(int len){
        if(len>0){
            this.data = new int [len];
        }else{
            this.data = new int [1];
        }
    }
    public boolean add(int num){
        if(this.foot<this.data.length){
            this.data[this.foot++] = num;
            return true;
        }
        return false;
    }
    public int [] getData(){
            return this.data;
        }
    }
}
public class Demo{
    public static void main(String args[]){
        Array a = new Array(3);
        System.out.println(a.add(10));
        System.out.println(a.add(20));
        System.out.println(a.add(30));
        System.out.println(a.add(100));
        System.out.println(a.add(100));
        int [] temp = a.getData();
        for(int x=0;x<temp.length;x++){
            System.out.println(temp[x]);
        }
}
}

相关文章

  • Java 方法、关键字、重载、覆写

    命名要求 方法 分为普通方法、构造方法、set/get方法方法名前加两种类型,有返回值(8大数据类型),无返回值(...

  • 第31节:Java基础-类与对象

    前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包...

  • Java 方法覆写和重载

    /** Java方法的使用 @author bo */ public class JavaMet { }publi...

  • 深入理解 Java 中的 override 和 overload

    override 和 overload,分别翻译为覆写和重载,是 Java 多态(Polymorphism)的两种...

  • 方法重载与方法重写(@Overload @Override)

    java方法重载和方法重写(方法覆盖)的区别: 方法重载: Overload 方法重写: Override 批判,...

  • java基础之继承(二)

    上篇我们介绍了java中的构造方法,了解了关键字this和super在继承中所起到的作用,this可以显式调用重载...

  • java se重写

    重写(override)继承关系中,方法名称一样,参数列表一样,也叫方法的覆盖、覆写重载(overload)方法名...

  • java面向对象

    方法重载 方法重写 继承父类( 关键字: super、extends) super 关键字1.用super调用父类...

  • JVM方法调用

    方法重载和方法重写多态是面向对象程序设计的重要特性,方法重载和方法重写是Java语言实现多态的主要形式。方法重载指...

  • JAVA基础_方法的重载

    java语言当中的方法的重载: 1、方法重载又称为Overload 2、方法重载什么时候使用?【当在同一个类中,方...

网友评论

    本文标题:Java 方法、关键字、重载、覆写

    本文链接:https://www.haomeiwen.com/subject/ranagttx.html