类的继承和组合

类的继承

public class Fruit{

public double weight;

public void info(){

System.out.println("水果"+weight);

}

}

public class Apple extends Fruit{

public static void main(String[] args){

//创建Apple对象

Apple apple=new Apple();

//Apple对象本身没有weight成员变量

//因为Apple的父类有weight成员变量,也可以访问Apple对象的weight成员变量

a.weight=90;

//调用Apple对象的info()方法

a.info();

}

}

public class Bird{

//Bird类的fly()方法

public void fly(){

System.out.println("fly");

}

}

public class Os extends Bird{

//重写Bird类的fly()方法

public void fly(){

System.out.println("fly1");

}

public static void main(String[] args){

//创建Os对象

Os o=new Os();

//执行Os对象的fly()方法

o.fly();

}

}

//可以使用super(被覆盖的是实例方法,或者父类类名(被覆盖的是类方法))作为调用者来调用被覆盖的方法

如果父类方法具有private访问权限,则该方法对其子类是隐藏的,因此子类无法访问该方法

class Animal{

private void beat(){

System.out.println("beat");

}

public void breathe(){

beat();

System.out.println("breathe");

}

}

//继承Animal,直接复用父类的breathe()方法

public Bird extends Animal{

public void fly(){

System.out.println("fly");

}

}

//继承Animal,直接复用父类的breathe()方法

public Wolf extends Animal{

public void run(){

System.out.println("run");

}

}

public class InheritTest{

public static void main(String[] args){

Bird b=new Bird();

b.breathe();

b.fly();

Wolf w=new Wolf();

w.breathe();

w.run();

}

}

class Animal{

private void beat(){

System.out.println("beat");

}

}

public void breath(){

beat();

System.out.println("breathe");

}

}

class Bird{

//将原来的父类组合到原来的子类,作为子类的一个组合成分

private Animal a;

public Bird(Animal a){

this.a=a;

}

//重新定义一个自己的breathe()方法

public void breathe(){

//直接复用Animal提供的breathe()方法来实现Bird的breathe()方法

a.breathe();

}

public void fly(){

System.out.println("fly");

}

}

class Wolf{

...

}

public class CompositeTest{

public static void main(String[] args){

//此时需要显示创建被组合的对象

Aniaml animal=new Animal();

Bird b=new Bird(a);

b.breathe();

b.fly();

//此时需要显示创建被组合的对象

Aniaml animal1=new Animal();

Wolf w=new Wolf(animal1);

w.breathe();

w.run();

}

}

时间: 2024-10-05 17:57:09

类的继承和组合的相关文章

python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法

对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(self,name,color,age): # 只干初始化的活 self.name = name if not isinstance(name,str): raise TypeError self.color = color self.age = age def jineng(self): print('新技能')

C++类的继承与组合区别

C++的“继承”特性可以提高程序的可复用性.正因为“继承”太有用.太容易用,才要防止乱用“继承”.我们要给“继承”立一些使用规则: 一.如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B 继承A 的功能. 不要觉得“不吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体. 二.如果类B 有必要使用A 的功能,则要分两种情况考虑: (1)若在逻辑上B 是A 的“一种”(a kind of ),则允许B 继承A 的功能.如男人(Man)是人(Human)的一种,男孩(Boy)是男人的

类的继承与组合

对象(Object)是类(Class)的一个实例(Instance).如果将对象比作房子,那么 类就是房子的设计图纸.所以面向对象设计的重点是类的设计,而不是对象的设计. 对于 C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类. 本章仅仅论述"继承"(Inheritance)和"组合"(Composition)的概念. 注意,当前面向对象技术的应用热点是 COM 和 CORBA,这些内容超出了 C++教材 的范畴,请阅读 COM 和 CORBA

Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别

在C++中,类与类之间的关系大概有四种,分别为继承,关联,聚合,和组合.其中继承我们大家应该都比较熟悉,因为是C++的三大特性继承Inheritance,封装Encapsulation,和多态Polymorphism之一. 继承Inheritance:是指一个类(子类)来继承另一个类(基类),并增加自己的功能,可以通过重写基类中的函数来实现.可以将继承理解成“IS A”的关系,比如A cat "IS A" animal, or A car "IS A" vehicl

Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特

python类继承和组合

在python3中所有类默认继承object,凡是继承了object的类都成为新式类,以及该子类的子类Python3中所有的类都是新式类,没有集成object类的子类成为经典类(在Python2中没有集成object的类以及它的子类都是经典类 继承式用来创建新的类的一种方式,好处是减少重复代码 class People: def __init__(self,name,age): self.name=name self.age=age def walking(self): print('%s is

继承有类式继承,构造函数继承人,组合继承

1:类式继承: // 声明父类 function Parent(){ this.parentValue = true; } // 为父类添加共有方法 Parent.prototype.getParentValue = function(){ return this.parentValue; } // 声明子类 function Child(){ this.childValue = false; } // 继承父类 Child.prototype = new Parent(); // 为子类添加共

类关系:继承和组合

1.继承 2.组合 3.继承和组合 在jichengandzuhe.py中 class People: def __init__(self, name, age, sex, year, mon, day): self.name = name self.age = age self.sex = sex self.birth = Date(year, mon, day) def walking(self): print('%s is walking ' % self.name) def talkin

Python全栈开发——类继承和组合

# 类组合将几个不相关的类组合在一起#什么时候用:当类之间有显著的不同,并且较小的类是较大的类所需组件时,用组合 class School: def __init__(self,name,addr): self.name=name self.addr=addr def zhao_sheng(self): print('%s is ' %self.name) class Course: def __init__(self,name,price,period,school): self.name=n