方法

权限

  • Tip:注意数据权限的设置,公开的可以直接调用,私密的要设置访问器和更新器
  • private:只能在同一类中进行访问
  • public:都可以进行访问
  • default:同一个包下都可以进行访问

方法参数

  • 引用类的传参//即地址绑定,外部改变,内部也要改变
	String[] fullname = new String[] { "Homer", "Simpson" };
    p.setName(fullname); `传入fullname数组`
    System.out.println(p.getName()); // "Homer Simpson"
    fullname[0] = "Bart"; // fullname数组的第一个元素修改为"Bart"
    System.out.println(p.getName()); // "Bart"
    //因为传的是数组名称,数组名称本质上是地址,所以产生了类似引用的作用,所以外部进行对数组的改变,内部的name名称会进行改变

重载

  • 函数名称一致,返回类型一般来说是一样的,不同在所传的参数
class Hello {
    public void hello() {
        System.out.println("Hello, world!");
    }
 
    public void hello(String name) {
        System.out.println("Hello, " + name + "!");
    }
 
    public void hello(String name, int age) {
        if (age < 18) {
            System.out.println("Hi, " + name + "!");
        } else {
            System.out.println("Hello, " + name + "!");
        }
    }
}

继承

**使用extends关键字

  • Tip1:**子类子类自动获得了父类的所有字段,严禁定义与父类重名的字段!
 
class Person {
    private String name;
    private int age;
 
    public String getName() {...}
    public void setName(String name) {...}
    public int getAge() {...}
    public void setAge(int age) {...}
}
 
class Student extends Person {
    // 不要重复name和age字段/方法,
    // 只需要定义新增score字段/方法:
    private int score;
 
    public int getScore() { … }
    public void setScore(int score) { … }
}
  • 扩展1:Person类定义的时候没有写extends,编译器会默认其extends Object类,并且由于Java中只能继承于一个类,所以除了Object类,其他的类都有且仅有一个父类

  • 扩展2:我们把Person称为超类(super class),父类(parent class),基类(base class),把Student称为子类(subclass),扩展类(extended class)。

Super & Protected 关键字

父类的私有属性子类无法进行访问,但是Protected的属性和方法可以。子类引用父类的字段时,可以用super.fieldName / this.fieldName

抽象类

  • 概念:类中的方法只是声明了,并没有具体的执行语句,那么称这个类为抽象类,需要用abstract关键字来修饰
  • 如果在父类中定义了抽象方法,那么在实现子类的时候必须对抽象方法进行复写(Override)

**Override & Overload

Override,覆写

  • 概念:是父类与子类之间多态性的一种表现,它是直接覆盖了一个方法并进行重写。即:方法名,参数,返回值都一样
  • 子类方法不能缩小父类方法的访问权限
  • 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)
  • 存在于父类和子类之间
  • 方法被定义为final不能被重写
  • 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖

Overload,重载

  • 概念:Overload它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法。即:相当于是重新写了一个方法,类似近义词的意思
  • 参数类型、个数、顺序至少有一个不相同
  • 不能重载只有返回值不同的方法名
  • 针对于一个类而言
  • 不能通过访问权限、返回类型、抛出的异常进行重载
  • 方法的异常类型和数目不会对重载造成影响