2018.1.13面向对象之继承复习

class Rect{
	int width=2, height=6;
	void setWidth(int width){
		this.width=width;
		//代码1 将参数的值赋给成员变量width
	}
	void setHeight(int height){
		this.height=height;
		//代码2 将参数的值赋给成员变量height
	}
	int getArea(){
		return width*height;
	}
}
public class E{
	public static void main(String[] args) {
		Rect rect=new Rect();
		rect.setWidth(5);
		rect.setHeight(6);
		System.out.println(rect.getArea());
	}
}

  

  

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" }

运行结果为30

//如果去掉this,则结果为12;  ??这是疑惑??

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 28.0px "PingFang SC Semibold" }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" }
span.s1 { font: 28.0px "PingFang SC" }

javaBean

javaBean:可以重复使用的软件组件。javaBean是一个java类,通过封装方法和属性,成为了具有某种功能或处理某种业务的对象,简称Bean。

特点:有点像设计模式的概念,可以重复利用,易维护,跨平台。

说明:为了让用这个Bean的应用程序构建工具知道Bean的属性和方法,只需在类的方法上遵守如下规则就行。

1.为这个类提供一个无参的共有的构造方法。

2.把所有的属性定义为私有的。

3.为每个属性提供共有getter(获得属性值)和setter(修改值)的方法。

/*定义一个javaBean*/
public class JavaBeanTest{
    private String name;
    private String age;
    public JavaBeanTest(){
        //不带参数的构造方法
    }
    //每个属性公有的setter和setter方法
    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;
    }
}

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" }

是先设置set方法还是get方法?有区别?有讲究没有?这是没有讲究的

为什么set方法中有参数和数据类型?而get方法无参数?

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" }

类的继承:在现有类的基础上构建子类,可以延伸,还可以覆盖,还可

以向上或向下转型。

class Employee{
    private String name;
    private int age;
    private double salary=3000;//Employee类的成员属性的设置

    public Employee(String name, int age, double salary){
        this.name=name;
        this.age=age;
        this.salary=salary;//构造器的参数设置,方便于参数的传递,把形参的值传给成员变量
    }
    public Employee(){

    }//为什么要空的构造器?这个代码应该可以省略

    public double getSalary(){
        return salary;
    }
    public double getMothlyIncome(){
        return salary;//获得值
    }    

}

class Manager extends Employee{
    private double bonus=1500;
    public Manager(){

    }
    //设置子类特有的方法
    public void setBonus(double bouns){
        this.bonus=bonus;//设置奖金
    }
    public double getBonus(){
        return bonus;//获取并返回奖金
    }
}

public class InheritanceTest{
    public static void main(String[] args) {
        Manager manager=new Manager();
        double sal=manager.getSalary();
        System.out.println("经理的月薪为"+sal);
        System.out.println("经理的奖金为"+manager.getBonus());
    }
}

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC"; min-height: 33.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC Semibold" }
span.s1 { font: 24.0px "PingFang SC" }

/*说明:

1.子类只能获取父类非私有的

2.子类不拥有父类的构造器

3.父类不拥有子类所特有的属性和方法

*/

继承的优点:

1.可以创建更多的特殊类型   2.提高代码的重用性     3.易于后期维护

使用继承的规则:

1.满足is-a关系,而组合满足has-a(   找个例子!!)

2.把通用的属性和操作发到超类中

3.除非使用的方法有意义,否则不使用继承。

组合是指在新的类中创建原有类的对象,重复利用已有类的功能

比如汽车是交通工具的一种,则是继承。一个汽车有多个轮胎,则是组合。

class Verhicle{
}
class Car extends Verhicle{
}
//继承

class Tire{
}
class Car extends Verhicle{
private Tire t=new Tire;
}
//组合

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC"; min-height: 33.0px }

在java中组合用的比继承多(接口和组合的方式比用继承有更好的可扩展性)

super关键字

作用:通过子类调用父类的构造方法,就用到super关键字,特别是父类私有的,还有被覆盖的情况下(明天找个例子)。

语法格式:super(参数值列表)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" }
span.Apple-tab-span { white-space: pre }

public Manager extends Employee{

private double blnus=1500;

public Manager(String name,int age,double salary,double bouns){

super(name,age,salary);

this.bonus=bonus;

}

public void setBounds(double blnus){

this.bouns=bouns;

}

public void getBounds(){

return bonus;

}

}

}

原文地址:https://www.cnblogs.com/shijinglu2018/p/8280674.html

时间: 2024-08-30 01:47:01

2018.1.13面向对象之继承复习的相关文章

2018.6.13 Java语言基础复习总结

Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计算机执行. 1.2汇编语言 负责把汇编语言翻译成二进制的机器语言,这种翻译程序就是汇编程序. 1.3高级语言 1954年第一个完全脱离机器硬件的高级语言FORTRAN诞生 1.3.1C语言 是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点. 1.3.2 C++语言 是具有面向对象

13.面向对象与继承

面向对象与原型 学习要点:1.学习条件2.创建对象3.原型4.继承 ECMAScript有两种开发模式:1.函数式(过程化) 2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是ECMASxript没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 一.学习条件 在JavaScript视频课程第一节课,就已经声明,Javascript课程需要大量的基础.这里我们详细探讨一下: 1.xhtml基础:Javascript方

黑马程序员——Java基础---面向对象之继承

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                                                 面向对象之继承  一:继承(extends) (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构.

javascript面向对象程序设计——继承初步(by vczero)

上一篇说了javascript的封装,没有刻意去说javascript的“共有函数”.“私有函数”,因为个人觉得这只是作用域的问题,我们不能刻意的模仿强类型语言(C++/JAVA)而去编写代码.尊重每一门语言的特性才是最为重要的. 一.基于prototype原型的继承 1 var Person = function(name, age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 Person.prototype = { 7 addUser: f

.Net学习笔记----2015-07-21(C#基础复习04,面向对象语法和继承复习)

面向对象: 1.封装.继承.多态 ***字段:存储数据,访问修饰符应该设置为private 私有的 ***属性:保护字段,对字段的取值和赋值进行限定 ***new关键字: 1.在堆中开辟空间 2.在开辟的空间中创建对象 3.调用对象的构造函数 ***this关键字:1.代表当前类的对象 2.显示的调用自己类里面的构造函数 ***构造函数:初始化对象,当创建对象的时候会调用构造函数 ***对字段的保护方法: 1.get() 2.set() 3.构造函数 ***return的作用: 1.立即结束本次

探讨 JS 的面向对象中继承的那些事

最近学了 JS 的面向对象,这篇文章主要是探讨 JS 的面向对象中继承的那些事. JS中继承的特点: 1.子类继承父类: 2.子类可以用父类的方法和属性 3.子类的改变可以不影响父类 下面用一个例子来说明 JS 的继承 这段代码创建了一个父类以及它的原型,同时还创建了一个子类,并继承了父类的私有属性 1 <script> 2 //这是父类 3 function Father(name,age,marry){ 4 this.name=name; 5 this.age=age; 6 this.ma

面向对象之继承

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 面向对象之继承 { class Program { static void Main(string[] args) { //记者:我是记者,我的爱好是偷拍,我的年龄34,我是一个男的 //程序员:我叫孙权 我的年龄23 我是男生 我的工作年限是3年

C++ primer plus读书笔记——第13章 类继承

第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生出新的类.而且可以在不公开实现的情况下将自己的类分发给其他人,同时允许他们在类中添加新特性. 2. 派生类构造函数首先创建基类对象,如果不调用基类构造函数,程序将使用默认的基类构造函数. 3. 创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数.派生类对象过期时,程序将首先调用派生

C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域

面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员是派生类成员一样: Bulk_item bulk; cout << bulk.book() << endl; 名字book的使用将这样确定[先派生->后基类]: 1)bulk是Bulk_item类对象,在Bulk_item类中查找,找不到名