java 面向对象(封装 组合 抽象类 接口)(一)封装组合

1.组合+构造方法  赋值

组合有两种:一个类作为另一个类的属性变量  一个类的对象类型作为另一个类方法的参数

组合的目的:方法的复用(可以使用别的类的方法) 比继承耦合度低。

代码:

//测试类

package edu.xust.oo;
//面向对象复习 oo
//
public class TextMain {
 //赋值可以通过setname进行赋值,或用有参的构造方法进行赋值
 public static void main(String[] args) {
  //1.组合+构造方法  赋值
   Driver dr=new Driver();
  Vehicle ve=new Vehicle();
  Destination de=new Destination("成都");//直接在构造方法里写参数进行赋值
   ve.setName("自行车");
   dr.run(ve, de);
 }
}

//Driver类

package edu.xust.oo;public class Driver {

 private String name;
 private Vehicle ve;//  vehicle作为属性变量  第一种组合
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Vehicle getVe() {
  return ve;//取出来的是vehicle的对象 
 }
 public void setVe(Vehicle ve) {
  this.ve = ve;
 }
 //
 public  void run(Vehicle ve,Destination de){//第二种组合
  System.out.println("利用了交通工具"+ve.getName()+"目的地"+de.getName());
 }
}

//Destination类

package edu.xust.oo;

public class Destination {
 private String name;//私有的别人不能用,别人想使用的话要通过getname‘ setname取用
 //构造方法:属性变量的初始化
 public Destination(){
  
 }
 public Destination(String name) {
  super();//调用父类构造方法·,通过super.
  this.name = name;
 }

public String getName() {
  return name;
 }

public void setName(String name) {
  this.name = name;
 }
}

//Vehicle类

package edu.xust.oo;

public class Vehicle {
 String name;

public String getName() {
  return name;
 }

public void setName(String name) {
  this.name = name;
 }
}

原文地址:https://www.cnblogs.com/Sonya/p/10725085.html

时间: 2024-08-02 15:34:55

java 面向对象(封装 组合 抽象类 接口)(一)封装组合的相关文章

java面向对象编程(八)--抽象类、接口

1.抽象类 1.1抽象类概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]. //抽象类的必要性[Demo124.java] public class Demo124 { public static void main(String[] args) { //Animal an=new Animal();抽象类不允许实例化 Animal an=new Cat(); an.cry(); an=new Dog(); an.cr

19 抽象类 接口类 封装. 多态

主要内容: 1.  抽象类(接口类): 制定一个规范  : from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self):pass class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' % self.mon

面向对象的理解 抽象类&接口

一.关于面向对象 1.什么是面向对象 在解释面向对象之前,先说说面向过程.学过C的同学都知道,C就是面向过程的一种语言.那什么是面向过程呢?比方说组装主机,对于面向过程,需要从0开始.买cpu,显卡,主板,电源,风扇,把这些都通过主板链接到一起.我需要清楚的知道主机组装的每一个步骤. 介绍了面向过程,再说会正题,什么是面向对象?对于上面的装主机过程面向对象会把主机先抽象成一个机箱,机箱里有cpu,显卡,主板,电源.用主机的人,不关心里面是怎么工作的,也不需要知道内部逻辑,只知道插上电源就能用.面

2019-05-17 Java学习日记之面向对象_多态&抽象类&接口

多态 多态的概述: A:多态(polymorphic) 事物存在的多种形态 B:多态前提 a:要有继承关系 b:要有方法重写c:要有父类引用指向子类对象 多态中的成员访问特点之成员变量: 成员变量:编译看左边(父类),运行看左边(父类)多态中的成员访问特点之成员方法:成员方法:编译看左边(父类),运行看右边(子类)多态中的成员访问特点之静态成员方法:静态方法:编译看左边(父类),运行看左边(父类)(静态和类相关,算不上重写,所以访问还是左边的)只有非静态的成员方法,编译看左边,运行看右边 多态的

韩顺平循序渐进学java 第13讲 抽象类.接口

13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,称为抽象方法,用abstract来修饰该类,称为抽象类. 13.1.2 抽象类-深入讨论 抽象类是java中一个比较重要的类: 1.用abstract关键字来修饰一个类时,这个类就叫抽象类: 2.用abstract关键字来修饰一个方法时,这个方法就叫抽象方法: 3.抽象方法在编程中用的不是很多,但是在公司笔试时考的较多. 13.1.3 抽象类-注意事项 1.抽象类不能实例化: 2.抽象类不一

黑马程序员--java基础之多态,抽象类,接口,匿名内部类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 4.4 子类的实例化过程 子类中所有的构造函数默认都会访问父类中空参数的构造函数. 因为每一个构造函数的第一行都有一条默认的语句super();. 子类会具备父类中的数据,所以要先明确父类是如何对这些数据初始化的. 为什么子类实例化的时候要访问父类中的构造函数呢? 那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的. P.S.

java 面向对象编程--第十章 接口

1.  接口可以看做是抽象类的特例.抽象类中可以定义抽象方法,也可以定义具体方法.但接口只能定义抽象方法.所有接口可以看作行为的抽象.定义接口使用关键字interface,实现接口使用关键字implements. 2.  如果一个方法用父类变量作为参数,那么可以传递任何一个子类对象.如果一个方法用接口变量作为参数,那么可以传递任何一个实现类对象.(多态) 3.  接口中只能定义抽象方法,所以接口中的方法无论是否书写abstract,都是抽象方法,都只能有方法的定义.另外,接口中的方法都是publ

JAVA 虚函数 抽象函数 抽象类 接口

1. Java虚函数 虚函数的存在是为了多态. C++中普通成员函数加上virtual关键字就成为虚函数 Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为.如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数 PS: 其实C++和Java在虚函数的观点大同小异,异曲同工罢了. 2. Java抽象函数(纯虚函数) 抽象函数或者说是纯虚函数的存在是为了定义接口. C++中纯虚函数形式为:virtual void print(

Java面向对象之抽象与接口

① 抽象类 抽象的基本概念 使用abstract关键字可以声明一个抽象类,该关键字可以出现在类声明时class关键字前的任何地方. 将父类声明为抽象后,仅有的改变是我们不能再实例化一个父类对象,其他的所有保持不变. 抽象类与普通类的区别 抽象类里边可以有抽象方法和普通方法,但是普通类里边只能有普通方法. 将父类声明为抽象后,不能再实例化父类对象,普通类无影响. 普通类子类继承父类,如果父类是抽象类且有抽象方法,子类必须要重写,如果是普通父类,则没有要求必须重写. 抽象类的特点 在类的前面加上ab