黑马程序员——java面向对象(二)继承、抽象、接口
来源:互联网 发布:ftp需要开放的端口 编辑:程序博客网 时间:2024/05/16 08:48
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、继承
1.继承概述
4.java中继承的注意事项
//定义动物类class Animal {//姓名private String name;//年龄private int age;//颜色private String color;public Animal() {}public Animal(String name,int age,String color) {this.name = name;this.age = age;this.color = color;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public void eat() {System.out.println("不要睡了,该吃饭了");}}//定义猫类class Cat extends Animal {public Cat() {}public Cat(String name,int age,String color) {super(name,age,color);}public void playGame() {System.out.println("猫玩英雄联盟");}}//定义狗类class Dog extends Animal {public Dog() {}public Dog(String name,int age,String color) {super(name,age,color);}public void lookDoor() {System.out.println("狗看家");}}//测试类class ExtendsTest5 {public static void main(String[] args) {//测试猫//方式1Cat c1 = new Cat();c1.setName("Tom");c1.setAge(3);c1.setColor("白色");System.out.println("猫的名字是:"+c1.getName()+";年龄是:"+c1.getAge()+";颜色是:"+c1.getColor());c1.eat();c1.playGame();System.out.println("---------------");//方式2Cat c2 = new Cat("杰瑞",5,"土豪金");System.out.println("猫的名字是:"+c2.getName()+";年龄是:"+c2.getAge()+";颜色是:"+c2.getColor());c2.eat();c2.playGame();}}
父类到子类是从一般到特殊的关系。
泛化:将不同子类中的共性抽象成父类的过程。
特化:在原有父类的基础上加入一些个性的过程。
原则:父类放共性,子类放个性。
二、super关键字
三、方法重写:
方法名:相同
参数表:相同
访问限制符:相同或者更宽
返回值类型:相同或者子类返回的类型是父类返回的类型的子类(在JDK5.0以后)
抛出的异常:不能比父类更宽。
super关键字:
super()表示调用父类的构造器
super()也和this()一样必须放在方法的第一句
super()和this()不能同时出现
super可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性
在子类的构造器中如果没有指定调用父类的哪一个构造器,那么就会调用父类的无参构造器,即super()
注意:
父类的构造器不能被子类继承
方法和属性可以被继承,权限不限制能否继承过来,限制的是能否直接访问
即私有继承,虽然子类不能直接访问,但子类依旧拥有。
先构造父类,后构造子类,先this后super
四、抽象类
//定义员工类abstract class Employee {//姓名、工号以及工资private String name;private String id;private int salary;public Employee() {}public Employee(String name,String id,int salary) {this.name = name;this.id = id;this.salary = salary;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}//工作public abstract void work();}//普通员工类class Programmer extends Employee {public Programmer(){}public Programmer(String name,String id,int salary) {super(name,id,salary);}public void work() {System.out.println("按照需求写代码");}}//经理类class Manager extends Employee {//奖金private int money; //bonus 奖金public Manager(){}public Manager(String name,String id,int salary,int money) {super(name,id,salary);this.money = money;}public void work() {System.out.println("跟客户谈需求");}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;}}class AbstractTest4 {public static void main(String[] args) {//测试普通员工Employee emp = new Programmer();emp.setName("张三");emp.setId("czbk001");emp.setSalary(18000);System.out.println(emp.getName()+"---"+emp.getId()+"---"+emp.getSalary());emp.work();System.out.println("-------------");emp = new Programmer("张三","czbk001",18000);System.out.println(emp.getName()+"---"+emp.getId()+"---"+emp.getSalary());emp.work();System.out.println("-------------");/*emp = new Manager();emp.setName("李四");emp.setId("czbk002");emp.setSalary(8000);emp.setMoney(2000);*///由于子类有特有的内容,所以我们用子类来测试Manager m = new Manager();m.setName("李四");m.setId("czbk002");m.setSalary(8000);m.setMoney(2000);System.out.println(m.getName()+"---"+m.getId()+"---"+m.getSalary()+"---"+m.getMoney());m.work();System.out.println("-------------");//通过构造方法赋值m = new Manager("李四","czbk002",8000,2000);System.out.println(m.getName()+"---"+m.getId()+"---"+m.getSalary()+"---"+m.getMoney());m.work();}}
//定义抽烟接口interface Smoking {//抽烟的抽象方法public abstract void smoke();}//定义抽象人类abstract class Person {//姓名private String name;//年龄private int age;public Person() {}public Person(String name,int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//吃饭();public abstract void eat();//睡觉(){}public void sleep() {System.out.println("睡觉觉了");}}//具体老师类class Teacher extends Person {public Teacher() {}public Teacher(String name,int age) {super(name,age);}public void eat() {System.out.println("吃大白菜");}}//具体学生类class Student extends Person {public Student() {}public Student(String name,int age) {super(name,age);}public void eat() {System.out.println("吃红烧肉");}}//抽烟的老师class SmokingTeacher extends Teacher implements Smoking {public SmokingTeacher() {}public SmokingTeacher(String name,int age) {super(name,age);}public void smoke() {System.out.println("抽烟的老师");}}//抽烟的学生class SmokingStudent extends Student implements Smoking {public SmokingStudent() {}public SmokingStudent(String name,int age) {super(name,age);}public void smoke() {System.out.println("抽烟的学生");}}class InterfaceTest2 {public static void main(String[] args) {//测试学生SmokingStudent ss = new SmokingStudent();ss.setName("张三");ss.setAge(27);System.out.println(ss.getName()+"---"+ss.getAge());ss.eat();ss.sleep();ss.smoke();System.out.println("-------------------");SmokingStudent ss2 = new SmokingStudent("李四",30);System.out.println(ss2.getName()+"---"+ss2.getAge());ss2.eat();ss2.sleep();ss2.smoke();}}
- 黑马程序员——java面向对象(二)继承、抽象、接口
- 黑马程序员——java-面向对象二(继承,多态,抽象,接口,包,内部类)
- 黑马程序员——面向对象(继承、抽象、接口)
- 黑马程序员——Java面向对象(二)之封装、继承、多态、接口等
- 黑马程序员---Java基础---面向对象:继承、抽象类、接口
- 黑马程序员——java第七天:面向对象(继承、子父类之变量、final、抽象、模板方法、接口)
- 黑马程序员————面向对象(继承,抽象类,接口,多态,异常)
- 黑马程序员 笔记(七)——面向对象(继承、抽象类、接口)
- 黑马程序员_JAVA笔记07——面向对象3(继承、final、抽象类、接口)
- 黑马程序员——面向对象07(继承、final、抽象类、模版方法、接口)
- 黑马程序员 Java面向对象<二> 继承、多态、接口
- 黑马程序员 07 Java基础教学 - 07 - 面向对象(3) 之 继承、抽象、接口
- 黑马程序员-Java的面向对象(抽象类、接口、内部类和继承、组合、多态)
- 黑马程序员——Java基础---面向对象(封装、继承、单例、抽象类、接口、内部类)
- 黑马程序员——>第七天<面向对象(继承-抽象类-接口)>
- 黑马程序员—面向对象(static,封装,继承,多态,内部类,抽象类,接口)总结
- 黑马程序员——Java基础---继承、抽象、接口(二)
- 黑马程序员——Java面向对象(三)—抽象类、接口
- iPhone屏幕尺寸、分辨率及适配
- 扯淡篇
- quick-x v3.3rc1 快速自定义类导出lua ,用ndk r9d
- 2015-03-04-pandas(1)
- hdu 3853 全期望公式+概率dp
- 黑马程序员——java面向对象(二)继承、抽象、接口
- 2015-03-06-pandas(2)
- python排列组合
- 3. spring事务
- 中高层绩效管理与辅导专家胡立
- [转]大数据分析的十二个解决方案
- 研发与技术人员绩效管理专家胡立
- 移动仿真:网络带宽控制
- UVA 10534 - Wavio Sequence(DP)