import关键字:
1.Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用
2.如果导入两个同名的类,只能使用包名+类名来显式调用相关类
import static java.lang.Math.*; 导入Math类的所有静态属性
继承:
1.父类也成为超类、基类、派生类。
2.Java中只有单继承
3.Java中类没有多继承,接口有多继承
4.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类的私有属性和方法)
5.如果定义一个类时,没有调用extends,则它的父类是:java.lang.object
instanceof:二目运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true,否则返回false。
重写:
1.“==”:方法名、形参列表相同
2.“<=”:返回值类型和声明异常类型,子类小于等于父类
3.“>=”:访问权限,子类大于父类
object类:
是所有JAVA类的根基,也就意味着所有的java对象都拥有Object类的属性和方法
to.String方法:
“==”和equals方法:
“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相同即是同一个对象。
equals提供定义“对象内容相同”的逻辑。
super:
super是直接父类对象的引用,可以通过super来访问父类中被子类覆盖的方法或属性
构造方法第一句总是:super()来调用父类对应的构造方法
封装:
“高内聚,低耦合”:类的内部数据操作细节自己完成,不允许外部干涉;仅暴露少量的方法给外部使用,尽量方便外部调用
private(私有):同一个类
default(无修饰符修饰):同一个类、同一个包
protected:同一个类、同一个包、不同包的子类
public:同一个类、同一个包、不同包的子类、所有类
类的属性的处理:
1.一般使用private访问权限。
2.提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(boolean变量的get方法是is开头)
3.一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰
多态:
1.多态是方法的多态,不是属性的多态(多态与属性无关)
2.多态的存在要有三个必要的条件:继承、方法重写、父类引用指向子类对象。
3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
package cn.mjc.oo;
public class TestPolym {
public static void main(String[] args) {
Dog d = new Dog();
animalCry(d);
// dogCry(d);
// catCry(new Cat());
}
static void animalCry(Animal a){
a.shout();
}
// static void dogCry(Animal a){
// a.shout();
// }
// static void catCry(Animal a){
// a.shout();
// }
}
class Animal{
public void shout(){
System.out.println("叫了一声!");
}
}
class Dog extends Animal{
public void shout(){
System.out.println("汪汪汪!");
}
}
class Cat extends Animal{
public void shout(){
System.out.println("喵喵喵!");
}
}