上转型对象与抽象类与接口
一、什么是上转型对象及其基本特征?
上转型对象---子类对象赋值给父类变量。
例如:
//父类
package com.wangxing.test1;
//父类
public class Person {
public void testPerson() {
System.out.println("父类Person的实例方法");
}
}
//子类
package com.wangxing.test1;
//子类
public class Student extends Person{
public void testStudent() {
System.out.println("子类Student的实例方法");
}
}
//测试类
package com.wangxing.test1;
public class Test1 {
public static void main(String[] args) {
//上转型对象---子类对象赋值给父类变量。
//person上转型对象表示将子类对象向上转型成父类对象
Person person=new Student(); //person上转型对象
//上转型对象的可以调用被子类继承的变量和方法,不能调用子类自己创建的变量和方法。
person.testPerson();
//person.testStudent();
//上转型对象不能调用子类自己创建的变量和方法,那么如果一定要强制使用子类自己创建的变量和方法,此时我们需要将上转型对象强制类型转换成子类对象。
Student stu=(Student)person;
stu.testStudent();
}
}
总结:
上转型对象可以调用被子类继承的变量和方法,不能调用子类自己创建的变量和方法。
上转型对象不能调用子类自己创建的变量和方法,那么如果一定要强制使用子类自己创建的变量和方法,此时我们需要将上转型对象强制类型转换成子类对象。
1.子类赋值给父类
2.上转型对象可以调用被子类继承的变量和方法,不能调用子类自己创建的变量和方法
3.由此我们认位上转型对象就是父类对象,因为它可以调用父类的变量与方法
4.它又不是父类对对象,因为它只能调用被子类继承的变量与方法
5.那么如果要使用子类对象自己创建的变量与方法就需要强制类型转换
用强制类型转换
例如 父类:Person 子类:Student Student sdt=(Student)Person;
二、什么是抽象类?
类--用来描述具有共同性质的一组事物的自定义复合数据类型
通过class关键字创建一个java类。
通过abstract 修饰的java类就是抽象类。
格式: 访问修饰符 abstract class 类名{}
例如:
public abstract class Hello{ }
三、为什么要使用抽象类?
抽象类的出现,体现出java的重构.[重复的动作提取出来]
抽象类是提供可以由子类共享的一般形式,由子类根据自己的实际情况去处理这个一般形式。
例如:坐车收费,出租车有收费功能【1元/公里】,公交车有收费功能【全程1元】
抽象类的子类往往都是同一种事物
四、抽象类中可以有哪些元素?
抽象类中的元素实例变量、类变量、构造方法、实例方法、类方法、【抽象方法】。
抽象方法--abstract修饰,没有方法体的方法。
抽象方法就是抽象类提供给子类的一般形式。
抽象类中可以有抽象方法,也可以一个抽象方法都没有。普通的java类中是不能有抽象方法的。
例如:
package com.wangxing.test1;
public abstract class MyAbstractClass {
public int id=1001; //实例变量
public static String name="zhangsan"; //类变量
public MyAbstractClass() {
System.out.println("构造方法");
}
public void testMethod() {
System.out.println("实例方法");
}
public static void staticMethod() {
System.out.println("类方法");
}
//abstract修饰,没有方法体的方法就是抽象方法
//抽象方法就是抽象类提供给子类的一般形式
//抽象类中可以有抽象