Java面向对象-Java类的继承

1,继承定义以及基本使用

定义:子类能够继承父类的属性和方法;

注意点:Java中只支持单继承;

私有方法不能继承;

上代码:

 package com.java1234.chap03.sec09;

 /**
* 动物类
* @author user
*
*/
public class Animal { private String name; // 姓名
private int 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 void say(){
System.out.println("我是一个动物,我叫:"+this.name+",我的年龄是:"+this.age);
}
}

我们定义一个Animal类 定义两个私有属性 name和age 然后给出共有的set get接口  以及一个共有的say()方法;

 package com.java1234.chap03.sec09;

 /**
* 定义Dog类,继承自Animal类
* @author user
*
*/
public class Dog extends Animal{ public static void main(String[] args) {
Dog dog=new Dog();
dog.setName("Pick");
dog.setAge(1);
dog.say();
}
}

我们再定义一个Dog类 通过extends关键字 继承Animal类;

我们实际上把父类Animal的共有方法get set以及say()方法都继承了;

运行输出:

我是一个动物,我叫:Pick,我的年龄是:1

2,方法重写

所谓方法的重写 我们可以在子类中根据实际业务把父类的方法重写;

上代码:

 package com.java1234.chap03.sec09;

 /**
* 定义一个Cat类,继承自Animal
* @author user
*
*/
public class Cat extends Animal{ /**
* 重写父类的say方法
*/
public void say(){
System.out.println("我是一个猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge());
} public static void main(String[] args) {
Cat cat=new Cat();
cat.setName("Mini");
cat.setAge(2);
cat.say();
}
}

这里 我们重写父类的say方法  改成 是猫  以及用getName和getAge,因为当前对象里继承不到父类的私有字段;

运行输出:

我是一个猫,我叫:Mini,我的年龄是:2

3,对象实例过程以及super关键字

对象实例化 先实例化调用父类构造方法,再调用子类实例化构造方法;

super关键字主要是调用父类方法或者属性;

我们修改下上面的实例:

 package com.java1234.chap03.sec09;

 /**
* 动物类
* @author user
*
*/
public class Animal { private String name; // 姓名
private int age; // 年龄 /**
* 无参父类构造方法
*/
public Animal() {
System.out.println("无参父类构造方法");
} /**
* 有参父类构造方法
* @param name 姓名
* @param age 年龄
*/
public Animal(String name,int age) {
System.out.println("有参父类构造方法");
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 void say(){
System.out.println("我是一个动物,我叫:"+this.name+",我的年龄是:"+this.age);
}
}
 package com.java1234.chap03.sec09;

 /**
* 定义一个Cat类,继承自Animal
* @author user
*
*/
public class Cat extends Animal{ private String address; public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public Cat() {
super();
System.out.println("子类无参构造方法");
} public Cat(String name, int age,String address) {
super(name, age);
this.address=address;
System.out.println("子类有参构造方法");
} /**
* 重写父类的say方法
*/
public void say(){
super.say(); // 调用父类的say()方法
System.out.println("我是一个猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge()+",我来自:"+this.getAddress());
} public static void main(String[] args) {
Cat cat=new Cat("Mini",2,"火星");
/*cat.setName("Mini");
cat.setAge(2);*/
cat.say();
}
}

运行输出:

有参父类构造方法

子类有参构造方法

我是一个动物,我叫:Mini,我的年龄是:2

我是一个猫,我叫:Mini,我的年龄是:2,我来自:火星

最新文章

  1. app上传到App Store的快捷方法及步骤
  2. SikuliLibrary 库关键字注释
  3. Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)
  4. ImageView设置点击效果没有用?ImageView src的图片大小改变不了?
  5. 安装Node.js
  6. js函数定时器,定时读取系统实时连接数
  7. 解决tomcat debug 调试时间过长的问题
  8. (高级篇 Netty多协议开发和应用)第十章-Http协议开发应用(基于Netty的HttpServer和HttpClient的简单实现)
  9. 6-最基础的服务-es6写法
  10. NOIP2017SummerTraining0706
  11. SignalR Self Host+MVC等多端消息推送服务(3)
  12. Spring-cloud(四)服务发现与消费:ribbon的使用
  13. 乌班图平台kurento +kurento-one2many-call+videojs-panorama+RICOH THETA实现VR直播
  14. Golang源码探索(三) GC的实现原理(转)
  15. java学习之路--继承(子类构造器)
  16. xtrabackup备份mysql-3 差异备份
  17. HTML5-indexedDB使用常见错误总结
  18. php 获取文件后缀最简单的方法
  19. Keras预测股票
  20. 解决RabbitMQ service is already present - only up...

热门文章

  1. visualvm监控jvm及远程jvm监控方法
  2. LeetCode OJ:Find Peak Element(寻找峰值元素)
  3. 简单使用JDOM解析XML
  4. JSP的指令
  5. 在C++中指针和引用传值区别
  6. 3.了解linux系统以及搭建学习环境
  7. 西交利物浦大学Java PAPER CODE: CSE105/12-13/S1/Resit Coursework
  8. [QT][转载] Qt信号和槽
  9. 关于JS浅拷贝和深拷贝
  10. 转:使用django-admin.py创建django工程