对象之间的关键:
继承:
1.java中的继承都是单继承,就是每个子类只有一个父类
2.java可以多层继承
3.父类中的私有变量不能被子类所继承,但是属性可以被继承
4.方法的覆盖(重写)子类重新覆盖父类的中函数,功能的扩展。
5.当子类要调用父类方法时,用super就可以调用。
6.当子类创建实例时,父类的构造函数也会被调用。
7.super(),可以调用父类中对应参数的构造函数必须放在第一位
final关键字:
1.可以修饰变量,变量就变成常量
2.可以修饰函数,函数就不能被重写
3.可以修饰类,类就不能被继承。
/**
对象之间的关系:
继承:
1.java中的继承都是单继承,就是每个子类只有能有一个父类。
2.java中可以多层继承。
3.父类的私有变量不能被子类所继承,但是属性可以被继承。
4.方法的覆写、重写
5.当子类要调用父类的方法,用super就就可以调用。
6.当子类创建实例时,父类(父类的父类)的构造函数也会被调用!
7.super()可以调用父类中对应参数的构造函数,必须要放在第一行
多态
*/
class JavaDemo31
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
Dog dog = new Dog();
Pig pig = new Pig();
dog.run();
pig.run();
dog.test1();
dog.setName("小黑");
System.out.println(dog.getName());
dog.test2();
Dog dog2 = new Dog("小花",2);
System.out.println(dog2.getName());
}
}
class AA
{
public AA(){
System.out.println("AA构造函数");
}
public void test1(){
System.out.println("test");
}
}
class Animal extends AA
{
private String name;
private int age;
public Animal(){
System.out.println("Animal构造函数!");
}
public Animal(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void run(){
System.out.println("跑");
}
public void eat(){
}
}
class Dog extends Animal
{
public Dog(){
System.out.println("dog构造函数");
}
public Dog(String name,int age){
//System.out.println("!!!!!!!!!!!!!!!!!");
super(name,age);//
}
//重写了父类的方法,就近原则
public void run(){
System.out.println("小狗跑");
}
public void test2(){
//run();
//this.run();
System.out.println(".......");
super.run();//super();this()
}
}
class Pig extends Animal
{
}
/**
final关键字:
1.可以修饰变量,变量就变成常量
2.可以修饰函数,函数就不能被重写
3.可以修饰类,类就不能被继承
*/
class JavaDemo32
{
public final static double PI =3.1415926;
public static void main(String[] args)
{
//DDD ddd = new DDD()
new DDD().test1();//匿名对象实例,适用于只用一次的情况!
}
}
class CCC
{
public void test1(){
System.out.println("test1");
}
}
class DDD
{
public void test1(){
System.out.println("test1!!!!!!!!!!!!!!!");
}
}