简介:面向对象的三大特性就是封装,继承,多态,是面向对象的核心。

  1. 封装
    1. 简介:封装是类的边界,可以对数据起到保护作用
    2. 特性:属性私有,提供公开的get/set方法
      1. 属性私有:private 数据类型 变量名;---->private修饰的属性只能在本类使用
      2. 公开的get/set方法 public修饰---- >在任何类中都可以使用
        1. get方法:----获取属性的值

          public 数据类型 getXxx(){

          return this.属性名

          }

        2. set方法:----修改属性的值

          public void setXxx(数据类型 变量名){

          this.属性名=变量名

          }

package com.lvsling.test;

public class Student {

private String name;

private int age;

private String clazz;

public Student() {

super();

// TODO Auto-generated constructor stub

}

public Student(String name, int age, String clazz) {

super();

this.name = name;

this.age = age;

this.clazz = clazz;

}

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;

}

public String getClazz() {

return clazz;

}

public void setClazz(String clazz) {

this.clazz = clazz;

}

}

  1. 继承
    1. 思想:类和类的共性,提取出来定义到父类中,由子类去继承。
    2. 语法: 关键字extends ----- >class 子类名 extends 父类名
    3. 特点:单继承-----一个子类只能有一个直接父类,一个父类可以有多个子类
    4. 子类对象的创建过程:
      1. 分配空间(父类和子类)---------给所有属性赋默认值
      2. 递归的创建父类对象
      3. 初始化本类属性----------给属性赋初值
      4. 调用本类构造方法------------给属性第三次赋值

package com.lvsling.test;

public class Monitor extends Student {

private String monitor;

public Monitor() {

super();

}

public Monitor(String monitor) {

super();

this.monitor = monitor;

}

public String getMonitor() {

return monitor;

}

public void setMonitor(String monitor) {

this.monitor = monitor;

}

public void testMonitor(){

System.out.println("test----monitor...");

}

}

  1. 多态
    1. 简介:父类的引用可以指向其不同子类的对象
    2. 使用特点
      1. 子类对象,始终不变
      2. 编译时,只能使用父类中有的方法;
      3. 运行时,子类中覆盖的方法优先执行,没有覆盖的方法,则执行从父类中继承到的方法
    3. 引用类型的相互转换-------目标类型和源类型必须兼容(存在继承关系)。
      1. 自动类型转换(向上转型---装箱)-----目标类型>源类型;
      2. 强制类型转换(向下转型----拆箱)-----目标类型<源类型;

        注意:向下转型时,父类引用指向子类对象,必须和要转换的类型一致,否则只能保证编译时ok,运行出现ClassCastException

    4. interfaceof关键字---判断引用所指向的对象类型和后面的类型是否兼容
    5. 应用:
      1. 多态用在方法的参数上:方法的形参如果是父类类型,则给该方法传递的实参类型可以是其所有子类的对象
      2. 多态使用在方法的返回值上:方法的形参类型如果是父类类型,则该方法可以返回,其所有子类的对象
    6. 好处:
      1. 对于使用者屏蔽因参数/返回值不同而带来的差异,使用方法的调用更简单,通用灵活。

package com.lvsling.test;

public class Test1{

public static void main(String[] args){

Animal a=new Dog();

a.eat();

a.test();

Dog d=(Dog)a;

d.lookHouse();

if(a instanceof Dog){

d.lookHouse();

}

}

}

//父类

class Animal{

//封装属性

private String name;

//构造方法

public Animal(){}

public Animal(String name){

this.name=name;

}

public String getName(){

return this.name;

}

public void eat(){

System.out.println("------eat-------");

}

public void test(){

System.out.println("------test-------");

}

}

//子类

class Dog extends Animal{

//方法覆盖

public void eat(){

System.out.println("------eat骨头-------");

}

public void lookHouse(){

System.out.println("------lookhouse-------");

}

}

class Cat extends Animal{

public void eat(){

System.out.println("------eatfish-------");

}

public void climbTree(){

System.out.println("------climbTree-------");

}

}

  1. 拓展与提升
    1. 方法修饰符:
      1. private-----本类可用,
      2. 默认(什么都不写)----本类可用,同包可用
      3. protected ----本类可用,同包可用,不同包的子类可用
      4. public ----公共的都可用

        以上4个访问修饰符都可以用来修饰属性和方法,只有public和默认可以修饰类

    2. 方法覆盖:----override
      1. 在子类中,把父类中继承到的方法进行重新实现
      2. 要求:返回值类型,方法名和形参列表都必须相同,访问修饰符可同或者更宽。
      3. 使用:子类对象名.方法名(实参)

java基础笔记(6)----面向对象的三大特性的更多相关文章

  1. python基础学习Day17 面向对象的三大特性之继承、类与对象名称空间小试

    一.课前回顾 类:具有相同属性和方法的一类事物 实例化:类名() 过程: 开辟了一块内存空间 执行init方法 封装属性 自动的把self返回给实例化对象的地方 对象:实例 一个实实在在存在的实体 组 ...

  2. Java基础语法(10)-面向对象之三大特征

    title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...

  3. python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)

    一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...

  4. python基础学习 Day19 面向对象的三大特性之多态、封装

    一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...

  5. Java基础语法(11)-面向对象之关键字

    title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...

  6. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  7. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  8. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  9. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

随机推荐

  1. 初试 Windows XP Embedded 系统开发1

    目前 Windows PE(Preinstallation Environment)和 Windows XP Embedded 是可以脱离主机里的硬盘独立运行的 Windows 操作系统,Window ...

  2. freemarker.template.TemplateException:Error executing macro:mainSelect

    1.错误描述 freemarker.template.TemplateException:Error executing macro:mainSelect require parameter:id i ...

  3. sqlserver 以年月日为条件查询记录

    今天做一个东西的时候,要查某年,某月的记录,从网上找到了sqlserver中的datepart函数,该函数是用来提取年份,月份,日期的一个函数,带两个参数,第一个为(yy,mm,dd)其中一个,表示年 ...

  4. RAM

    1.     前记 我们知道,不同的计算机结构对RAM 的使用方式是有区别的,典型的计算机结构有两个,冯诺依曼结构和哈佛结构,而两大阵营的领军人物就是传说中的Intel X86系列的8086和51单片 ...

  5. C#迭代语句、跳转语句--C#基础

    1.foreach每执行一次内含的代码时,循环变量就会一次读取集合中的一个元素,不需要个数.循环变量只是一个只读的局部变量,这个值是不能修改的.char后的word是 foreach语句的迭代变量,它 ...

  6. 【CJOJ1603】【洛谷1220】关路灯

    题面 Description 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老常就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉 ...

  7. 动态增加表单元素并获取元素的text和value提交

    以上是效果图 需求是这样的: 专家设置好条件,然后设备检测到达到相应的条件之后,设备发出提醒给用户. 这就需要专家设置好能看懂的条件之后,然后把给专家看的,正常人能看懂的条件和发送的设备的,设备能够识 ...

  8. TP5 模型类和Db类的使用区别

    原文:http://www.upwqy.com/details/3.html 总结 在控制器中  模型操作  get() 和 all()  只能单独使用来查询数据   想要链式操作查询数据 需要使用f ...

  9. C#枚举数值与名称的转换实例分享

    首先建立一个枚举: 复制代码代码如下: /// <summary>    /// 颜色    /// </summary>    public enum ColorType   ...

  10. MySQL Connector 卸载

    MySQL Connector 安装的时候有时候会遇到很多问题,有时候会卸载失败,导致无法重新安装.测试了网上各种办法,删文件,删注册表,重启,360强行删除都不是很有效.最后发现msizap比较有效 ...