继承(二)

1.继承(extends)
  1.1继承:遗传
  1.2语法:
    public class 子类 extends 父类{
    }
    eg:
      public class Dog extends Pet{
      }
  1.3继承的特点
    a.子类可以继承父类的非私有的属性和方法
    b.不能继承构造方法
    c.继承默认权限修饰符的方法和属性,子类和父类必须在同一包中
  1.4super(父类)
    super.属性名 //表示访问父类的属性
    super.方法名(参数) //表示访问父类的方法
    super(参数) //表示访问父类的构造方法
    注意:super()访问父类构造函数时,必须写在第一行
  1.5访问修饰符总结
    访问修饰符     本类   同包    子类   其他
    private 私有的      #
    默认(friendly)   #     #
    protected 受保护的   #     #     #
    public 公共的         #     #      #     #

2.抽象类(abstract)
  2.1 抽象类
    语法:public abstract class 类名{};
  2.2抽象方法
    语法:public abstract 返回值类型 方法名(参数列表)
      eg:public abstract void print();
    注意:抽象方法有abstract修饰,并且抽象方法没有方法体
  2.3抽象类和抽象方法的特点
    a.都用abstract修饰
    b.抽象方法没有方法体
    c.抽象类不能实例化,并且继承抽象类的子类都必须重写抽象类中的所有抽象方法
  注意:
    a.抽象类中不一定有抽象方法
    b.含有抽象方法的类,一定是抽象类(接口)

3.重写
  3.1重写就是子类重写定义父类的方法
  3.2重写规则
    a.方法名和参数列表相同
    b.修饰符访问权限子类和父类相同或者比父类大
    c.返回值类型子类和父类相同(或者是父类的返回值类型的子类)
    d.异常跟父类相同或者范围更小

  一般:重写时,子类的东西都要与父类保持一致

  3.3方法重载与方法重写的区别
          位置    方法名    参数表   返回值         访问修饰符
    方法重写  子类   相同      相同     相同或者其子类   不能比父类更严格
    方法重载   同类    相同      不相同    无关         无关
  
  方法重写时子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类型相同(或者其子类)、访问修饰符不能严于父类方法重载是同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符无关

4.final
  final修饰的类不能被继承
  final修饰的方法不能重写
  final修饰的属性不能被修改

运行结果:

 1 package Day08;
 2
 3 public class Dog extends Pet{
 4     private int strain;
 5
 6     public Dog() {
 7
 8     }
 9     public Dog(int strain) {
10         super();
11         this.strain=strain;
12     }
13     //打印宠物的所有信息
14     public void print(){
15         System.out.println("姓名:"+getName()+"品种:"+strain);
16     }
17     public int getStrain() {
18         return strain;
19     }
20     public void setStrain(int strain) {
21         this.strain = strain;
22     }
23
24
25
26 }

Dog类

 1 package Day08;
 2
 3 public abstract class Pet {
 4     private int age;                    //年龄
 5     private String name;                //昵称
 6     private int health;                    //健康值
 7     private int love;                    //亲密度
 8     public Pet() {
 9
10     }
11     //规约
12     public abstract void print();
13
14 //    //打印信息
15 //    public void print(){
16 //        System.out.println("名字:"+this.name+",年龄:"+this.age+",健康值:"+this.health+",亲密度:"+this.love);
17 //    }
18
19     public int getAge() {
20         return age;
21     }
22     public void setAge(int age) {
23         this.age = age;
24     }
25     public String getName() {
26         return name;
27     }
28     public void setName(String name) {
29         this.name = name;
30     }
31     public int getHealth() {
32         return health;
33     }
34     public void setHealth(int health) {
35         this.health = health;
36     }
37     public int getLove() {
38         return love;
39     }
40     public void setLove(int love) {
41         this.love = love;
42     }
43
44 }

Pet父类

 1 package Day08;
 2
 3 public class Test {
 4     public static void main(String[] args) {
 5         //Pet pet=new Pet();
 6         Dog d=new Dog();
 7         d.setName("hh");
 8         d.setStrain(1);
 9         d.print();
10     }
11 }

测试类

时间: 2024-10-15 00:40:49

继承(二)的相关文章

C++之继承(二)

目录 C++之继承(二) 一.多继承 二.重复继承 三.多重继承 C++之继承(二) 一.多继承 多继承是指一个子类继承多个父类.多继承对父类的个数没有限制,继承方式可以是公共继承.保护继承和私有继承, 不写继承方式,默认是private继承. #include <iostream> using namespace std; class B1{ public: B1(){cout<<"B1\n";} }; class B2{ public: B2(){cout&

【C++】浅谈三大特性之一继承(二)

三,继承方式&访问限定符 派生类可以继承基类中除了构造函数和析构函数之外的所有成员,但是这些成员的访问属性是由继承方式决定的. 不同的继承方式下基类成员在派生类中的访问属性: 举例说明: (1)public继承 eg1: #include <iostream> using namespace std; class Person { public://公有数据成员 int length;//身高 int weight;//体重 }; class Student:public Person

原型,原型对象,原型链,构造函数,继承(二)

1.prototype(原型对象)有一个属性叫做constructor,constructor默认指向prototype(原型对象)所在的构造函数 2.constructor属性是定义在prototype上的,那就意味着可以被实例对象所继承 3.可以使用hasOwnProperty 方法来验证一个属性是自己的还是继承过来的 4.constructor的作用: 作用一:分辨原型对象到底属于哪个构造函数 instanceof() 作用二:可以从一个实例对象创建另一个实例对象 var Fun = fu

c++之继承二

下面的实例是使用继承完成点.圆.圆柱体的层次结构 1 #include <iostream> 2 using namespace std; 3 #define PI 3.1415926 4 5 class Point 6 { 7 friend ostream& operator << (ostream& output,Point&); 8 public: 9 Point(int x =0,int y =0); //带默认参数的构造函数 10 void set

java回顾之继承 二

调用父类构造器 子类不会获得父类构造器,但是子类构造器里面可以调用父类构造器初始化代码类似于一个构造器调用另外一个构造器: public class Box { String name; String color; String weight; public Box(String name,String color) { this.name=name; this.color=color; } public Box(String name,String color,String weight) {

C++ 类的继承二(赋值兼容性原则)

//赋值兼容性原则 #include<iostream> using namespace std; class PointA{ public: PointA(){ x = 0; y = 0; } void Set(){ } private: int x; int y; }; class PointB :public PointA{ public: private: int c; }; /* 赋值兼容性原则内部原理分析 在子类继承父类的时候,在子类的内存区域上,父类的元素会放在前面,子类的元素会

Js继承二

<html> <head> <title></title> <style> #div1{ width:200px; height:200px; background:yellow; position:absolute; } #div2{ width:200px; height:200px; background:green; position:absolute; } </style> <script> window.onl

Java三大特征之继承(二)

在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一---继承. 在讲解之前先看一个例子:这个例子还是上一篇博文[Java三大特征之封装(一)]中的. 从这里我们可以看出,Wife.Husband两个类除了各自的husband.wi

VC++之 继承(二)

C++多重继承的概念 由多个基类共同派生出派生类的继承结构称为多重继承或多继承(multiple-inheritance). 多重继承是从实际的需要产生的.例如:从大学在册人员产生学生和教职工.再从学生派生研究生.如果考虑到研究生可以当助教,那么他们又有了教职工的特性.教职工可分为教师和行政人员,但行政人员也可以去授课,兼有教师的特点等.这就是多继承,其继承关系如下图所示. 图 大学在册人员继承关系 多重继承下的歧义性问题及解决 问题1:教职工兼研究生,在其基类“教职工”中有一个“身份证号”,另

关于js的对象原型继承(二)

本章讨论使用new一个构造函数来创建一个对象. 前期知识点说明: 1.prototype是函数的一个属性,每个函数都有一个prototype属性.这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. 2.__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性. 首先上代码: //构造函数 function Cat(name) { this.name=name||'某只猫'; this