1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性。也就是子类和父类

2.一个父类可以拥有多个子类,一个子类只允许有一个父类

3.用extends关键字表示一个类继承自另一个类

1 class A{ }  //父类或基类
2 class B extends A { } //B是A的子类
3 class C extends B { } //C是B的子类,可以直接复用A的属性和方法

4.一切类的祖先是Object类

5.如果子类中的一个方法,其名称、返回类型以及参数列表和父类中的某个方法一样,那么可以说子类的方法重写了父类的方法

6.重写父类方法时不可降低方法的访问权限

7.重写了父类方法后要调用被重写的方法,可在子类方法中使用super.被重写的方法()

8.子类不继承父类的构造方法,子类的构造方法必须调用父类的构造方法,如果子类没有显式的调用父类构造方法,系统默认调用无参数的构造方法,相当于省略了super();语句

9.子类构造方法中使用super()调用父类构造方法,不必须作为子类构造方法的第一条语句

10.子类在实例化时先调用父类构造方法,后调用子类构造方法

 1 //父类
2 public class Inherit1 {
3 private String name;//私有属性
4 private String sex;
5 //根据属性生成构造方法
6 public Inherit1(String name, String sex) {
7 this.name = name;
8 this.sex = sex;
9 }
10 public void hello(){
11 System.out.println("我叫:"+name+"我是:"+sex+"孩!");
12 }
13 }
14 //子类
15 public class Inherit2 extends Inherit1{
16 public Inherit2(String name,String sex) {
17 //调用父类的构造方法
18 super(name,sex);
19 }
20 public void hello(){
21 System.out.println("我是新来的!");
22 super.hello();//调用父类方法
23 }
24 }

11.在实例化子类对象时,先调用父类构造方法,在调用子类构造方法;(就好比要先有父亲才会有儿子),可从以下例子看出

 public class Person {
private String name;
private int age;
public Person() {
System.out.println("父类构造方法");
}
public String getName() { //取得name属性
return name;
}
public void setName(String name) { //设置name属性
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
} public class Student extends Person{
private String school;
public Student() {
System.out.println("子类构造方法");
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
} public class Demo {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("张三");
stu.setAge(23);
stu.setSchool("云南大学");
System.out.println("姓名:"+stu.getName()+"年龄:"+stu.getAge()+"学校:"+stu.getSchool());
}
} 运行结果:
父类构造方法
子类构造方法
姓名:张三年龄:23学校:云南大学

方法的覆写

所谓方法的覆写就是在子类中定义了与父类同名的方法,但是在方法覆写是必须考虑权限问题,即被子类覆写的方法不能有比父类更加严格的访问权限

(即:private、default、public;这三种访问权限的大小关系private<default<public)

所以父类中定义的方法是public,子类覆写的方法也必须是public

 class Person{
void print(){ //定义一个默认访问权限的方法
System.out.println("父亲的方法");
}
}
class Student extends Person{
public void print() { //覆写父类方法,扩大访问权限public
System.out.println("儿子覆写过的方法");
}
}
public class Demo{
public static void main(String[] args) {
new Student().print();
}
} 运行结果:
儿子覆写过的方法

与方法的覆写还有一个相似的是属性的覆盖

 class Person{
public String info = "ABC";
}
class Student extends Person{
public String info = "UFO";
public void print() {
System.out.println("父类中的属性:"+super.info);//访问父类中的info属性
System.out.println("子类中的属性:"+this.info);//访问子类中的info属性
}
}
public class Demo{
public static void main(String[] args) {
new Student().print();
}
} 运行结果:
父类中的属性:ABC
子类中的属性:UFO
 

JAVA面对对象(二)——继承、方法的覆写的更多相关文章

  1. JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写

    /* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...

  2. JAVA面对对象(四)——抽象类

    抽象类的作用类似“模板”,可以根据它的格式来修改.创建新的类:但是不能直接由抽象类创建对象只能通过抽象类派生出新的类,再由它来创建对象:抽象类的使用同样是单继承,即一个子类只能继承一个抽象类 抽象类的 ...

  3. 菜鸡的Java笔记 第二十 - java 方法的覆写

    1.方法的覆写    当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写    范例:观察方法的覆写 class A{ public void ...

  4. Java中方法的覆写

    所谓方法的覆写override就是子类定义了与父类中同名的方法,但是在方法覆写时必须考虑权限,即被子类覆写的方法不能拥有比父类方法更加严格的访问权限. 修饰符分别为public.protected.d ...

  5. [改善Java代码]覆写equals方法必须覆写hashCode方法

    覆写equals方法必须覆写hashCode方法,这条规则基本上每个Javaer都知道,这也是JDK API上反复说明的,不过为什么要这样做呢?这两个方法之间有什么关系呢?本建议就来解释该问题,我们先 ...

  6. C#使用基类的引用 and 虚方法和覆写方法

    结论:使用基类的引用,访问派生类对象时,得到的是基类的成员. 虚方法和覆写方法

  7. java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...

  8. Java中的overload(方法的覆写)

    方法覆写(overload)与方法的重载非常相似,它在 Java的继承中也有很重要的应用. 写程序可能会碰到下面的情况,在父类中已经实现的方法可能不够精确,不能满足子类 的需求.例如在前面的 Anim ...

  9. java面对对象 关键字this super

    this:this是指向对象本身的一个指针,成员函数内部指向当前类的对象 其实this主要要三种用法: 1.表示对当前对象的引用! 2.表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是 ...

随机推荐

  1. 在 Laravel 5 中集成七牛云存储实现云存储功能

    本扩展包基于https://github.com/qiniu/php-sdk开发,是七牛云储存 Laravel 5 Storage版,通过本扩展包可以在Laravel 5中集成七牛云存储功能.   1 ...

  2. Solr建立索引时,过滤HTML标签

    原文地址  http://www.joyphper.net/article/201306/188.html 1.在数据库的读取文件data-config.xml 中的entity 标记里边添加 tra ...

  3. javascript瀑布流效果

    javascript瀑布流效果 其实javascript瀑布流 前几年都已经很流行了(特别是美丽说,蘑菇街),最近看到网上有人问这个瀑布流效果,所以自己有空的时候就研究了下,其实也是研究别人的代码,研 ...

  4. jmeter.bat配置(主要关于OOM)

    jmeter.bat是jmeter在windows系统下的启动文件.在使用jmeter压测,线程数设置过多时可能会报内存溢出(Out Of Memory Error),这时候可以去尝试调整一下jmet ...

  5. 使用Java线程并发库实现两个线程交替打印的线程题

    背景:是这样的今天在地铁上浏览了以下网页,看到网上一朋友问了一个多线程的问题.晚上闲着没事就决定把它实现出来. 题目: 1.开启两个线程,一个线程打印A-Z,两一个线程打印1-52的数据. 2.实现交 ...

  6. strstr(),strchr()

    strstr($a, $b)和strchr()一样,起的别名,表示查找$a中第一次出现$b,并返回字符串的剩余部分: .strrchr()从后往前查第一个出现的 直接写两行代码: <?php $ ...

  7. IP数据库

    免费的IP数据库,qqwry.dat文件:通过读文件来获取ip地址的地区信息: QQWry.Dat的格式如下: +----------+| 文件头 | (8字节)+----------+| 记录区 | ...

  8. Linux学习笔记(第十一章)

    文件系统及程序资源的配置ulimit: 环境变量: bash变量 alias设定变量别名 设定别名 取消别名 指令执行顺序 组合键 通配符 数据流重导向 多指令 以下命令都需用管道符链接: 截取命令: ...

  9. 【第三方插件】使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  10. ubuntu 12.04 桌面版关闭图形界面

    对于12.04的ubuntu桌面系统,如果想在开机的时候直接进入字符界面,那可以: 编辑文件 /etc/init/lightdm.conf,在第12行附近,原句“ and runlevel [!06] ...