java基础笔记(6)----面向对象的三大特性
简介:面向对象的三大特性就是封装,继承,多态,是面向对象的核心。
- 封装
- 简介:封装是类的边界,可以对数据起到保护作用
- 特性:属性私有,提供公开的get/set方法
- 属性私有:private 数据类型 变量名;---->private修饰的属性只能在本类使用
- 公开的get/set方法 public修饰---- >在任何类中都可以使用
- get方法:----获取属性的值
public 数据类型 getXxx(){
return this.属性名
}
- 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; } } |
- 继承
- 思想:类和类的共性,提取出来定义到父类中,由子类去继承。
- 语法: 关键字extends ----- >class 子类名 extends 父类名
- 特点:单继承-----一个子类只能有一个直接父类,一个父类可以有多个子类
- 子类对象的创建过程:
- 分配空间(父类和子类)---------给所有属性赋默认值
- 递归的创建父类对象
- 初始化本类属性----------给属性赋初值
- 调用本类构造方法------------给属性第三次赋值
|
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..."); } } |
- 多态
- 简介:父类的引用可以指向其不同子类的对象
- 使用特点
- 子类对象,始终不变
- 编译时,只能使用父类中有的方法;
- 运行时,子类中覆盖的方法优先执行,没有覆盖的方法,则执行从父类中继承到的方法
- 引用类型的相互转换-------目标类型和源类型必须兼容(存在继承关系)。
- 自动类型转换(向上转型---装箱)-----目标类型>源类型;
- 强制类型转换(向下转型----拆箱)-----目标类型<源类型;
注意:向下转型时,父类引用指向子类对象,必须和要转换的类型一致,否则只能保证编译时ok,运行出现ClassCastException
- interfaceof关键字---判断引用所指向的对象类型和后面的类型是否兼容
- 应用:
- 多态用在方法的参数上:方法的形参如果是父类类型,则给该方法传递的实参类型可以是其所有子类的对象
- 多态使用在方法的返回值上:方法的形参类型如果是父类类型,则该方法可以返回,其所有子类的对象
- 好处:
- 对于使用者屏蔽因参数/返回值不同而带来的差异,使用方法的调用更简单,通用灵活。
|
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-------"); } } |
- 拓展与提升
- 方法修饰符:
- private-----本类可用,
- 默认(什么都不写)----本类可用,同包可用
- protected ----本类可用,同包可用,不同包的子类可用
- public ----公共的都可用
以上4个访问修饰符都可以用来修饰属性和方法,只有public和默认可以修饰类
- 方法覆盖:----override
- 在子类中,把父类中继承到的方法进行重新实现
- 要求:返回值类型,方法名和形参列表都必须相同,访问修饰符可同或者更宽。
- 使用:子类对象名.方法名(实参)
java基础笔记(6)----面向对象的三大特性的更多相关文章
- python基础学习Day17 面向对象的三大特性之继承、类与对象名称空间小试
一.课前回顾 类:具有相同属性和方法的一类事物 实例化:类名() 过程: 开辟了一块内存空间 执行init方法 封装属性 自动的把self返回给实例化对象的地方 对象:实例 一个实实在在存在的实体 组 ...
- Java基础语法(10)-面向对象之三大特征
title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...
- python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- python基础学习 Day19 面向对象的三大特性之多态、封装
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- Java基础语法(11)-面向对象之关键字
title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...
- Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- Java学习笔记二十一:Java面向对象的三大特性之继承
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
- Java学习笔记十八:Java面向对象的三大特性之封装
Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态 二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...
随机推荐
- Oracle SQL Developer中SQL语句格式化快捷键
Oracle SQL Developer中SQL语句格式化快捷键 格式化SQL语句:Ctrl+F7
- Adobe RIA 开发工程师认证考试大纲
AdobeRIA 开发工程师认证考试大纲 考题数量:共90道题,考试通过正确率:60% 考试时间:120分钟 试题种类:单选题.多选题和判断题 1. Adobe RIA基础知识(2道题) ...
- web开发性能优化---SEO优化篇
一.清理垃圾代码 清理垃圾代码是指删除页面中的冗余代码,可以删除80%的冗余代码. 垃圾代码主要指那些删除了也不会对页面有任何影响的非必要代码. 最常见的垃圾代码,空格 空格字符是网页中最常见的垃圾代 ...
- Python机器学习 (Python Machine Learning 中文版 PDF)
Python机器学习介绍(Python Machine Learning 中文版) 机器学习,如今最令人振奋的计算机领域之一.看看那些大公司,Google.Facebook.Apple.Amazon早 ...
- emacs配置
原配置 (global-set-key [f9] 'compile-file) (global-set-key [f10] 'gud-gdb) (global-set-key (kbd "C ...
- [BZOJ2298] [HAOI2011] problem a (dp)
Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个 ...
- Delphi子窗体随主窗体大小而变化
当然办法有很多种,我建议用TRzsplitter更好点, TRzsplitter分割,在其上边放置panel,然后把align置为alClient,则可以随着主窗体的大小而一起变动 选中此控件右键ed ...
- spring boot rest例子
简介: 本文将帮助您使用 Spring Boot 创建简单的 REST 服务. 你将学习 什么是 REST 服务? 如何使用 Spring Initializr 引导创建 Rest 服务应用程序? 如 ...
- New Windows 10 SDK - Toast Notification
概述 Toast Notification 在 UWP App 中有很重要的作用,能够很大程度上增强 App 和用户之间的沟通,比如运营推广活动.版本更新.提醒类任务提示等等.Toast Notifi ...
- HyperLedger Fabric 1.1 手动部署单机单节点
手动部署单机单节点 之前发布过官方的e2e部署方案,由于环境或是访问权限等各种问题,还是有相当一部分码友无法成功跑起来,故此,本章将来一次纯手动操作的集群部署. 主要需要的步骤如下: 1:环境整理 2 ...