1.重载overload
同一个类中定义了名字相同,参数不同的方法。调用根据参数个数,顺序,类型调用。
构造方法也能overload
public class MyMath{
public int add(int a,int b){
return a+b;
}
public int add(int a,int b,int c){
return a+b+c;
}
}
public class TestOverload{
public static void main(String[] args){
MyMath m=new MyMath();
System.out.println(m.add(1,2));//3
System.out.println(m.add(1,2,3));//6
}
}
2.this隐式参数
方法:静态方法和普通方法
this用在普通方法中,代表当前对象,用来给对象中的属性赋值
this( );位于构造方法中第一句,其他构造方法
3.三大特征
3.1继承
- 继承-提高代码的复用性,类只有单继承,接口有多继承。
- 根类java.lang.Object,所有类的祖宗
- Object类,没声明父类的,自动继承这个类
- 方法的重写- override
public class Main {
public static void main(String[] args){
Object o = new Object();
System.out.println(o.toString());
}
}
java.lang.Object@de0a01f
- super关键字-直接父类对象的引用
- this关键字-当前对象的引用
main:
Bird b=new Bird();//
Bird():{
super();//Animal
}
Animal(){
super();//Object
}
Object(){
//
}
- is-a 用继承,extends,然后super调用父类对象中方法,属性
- has-a 用组合
Bird(){
Animal an =new Animal();//通过new一个对象,组合其他类的方法。平级关系
an.run();
}
- final关键字
修饰变量为常量:final int HEIGHT=170;
修饰方法:方法不能重写override
修饰类:类不能被继承extends
3.2封装-encapsulation
- 高内聚,低耦合:类内部数据操作细节自己完成,暴露更少的方法给外部(苹果手机)
private:当前类
default:当前类,同一个包
protected:当前类,同一个包,子类
public:当前类,同一个包,子类,所有类
public class Man{
private String name;//私有
private int age;//
public static int CC;//静态变量一般公有
private boolean strong;//isStrong
public String getName(){
return name;
}//用public方法获取私有属性
public void setName(String name){
this.name=name;
}
public boolean isStrong(){//特殊
return strong;
}
public void setStrong(boolean strong){
this.strong=strong;
}
}
3.3多态-polymorphism
public class Animal{
public void voice(){
System.out.println("普通叫声");
}
}
public class Cat extends Animal{
public void voice(){
System.out.println("喵喵");
}
}
public class Dog extends Animal{
public void voice(){
System.out.println("汪汪");
}
}
public class Test{
public static void main(String[] args){
Animal m1=new Cat();
m1.voice();//喵喵
Animal m2=new Dog();
m2.voice();//汪汪
}
}
- instanceof 用于判断对象是不是一个类的实例