(Java)面向对象的三大特征
封装、继承与多态
封装
封装的作用(好处)
- 提高程序安全性,保护数据
 - 隐藏代码的实现细节
 - 统一接口
 - 增加系统可维护性
 
属性私有(关键字private)
加上Private可使该属性私有于一个类,在其他地方new此类后不可通过'.'访问私有属性
get,set
用于操作私有属性
e.g.
//get获取这个数据
public String getName(){
    return this.name;
}
//set给这个数据设置值
public void setName(String name){
    this.name = name;
}
快捷键:alt+insert可以直接生成get、set
继承(关键字extends)
继承是类和类之间的关系
只有单继承没有多继承(不可同时继承多个类)
private不可继承,但可以用get、set进行操作
一般继承的都是public
继承是扩展的意思
子类是父类的拓展
可以看作是树
e.g.
//父类
public class Person{
}
//派生类(子类)
public class Student extends Person{
}
//派生类(子类)
public class Teacher extends Person{
}
Ctrl+H为打开继承树的快捷键
Object是所有类都默认直接或间接继承的类
super、this
super.属性 表示父类里的属性
this.属性 表示此类里的属性
- 子类中默认隐藏代码:调用父类的无参构造
 - 调用父类构造器必须在字类构造器的第一行
 - super只能在子类的方法或构造方法中
 - super和this不能同时调用构造方法、
 
方法重写
- 重写都是方法的重写,与属性无关
 - 父类的引用指向子类
 - 静态方法的调用只和左边定义的数据类型有关
 
e.g.
//父类
public class Person{
    public static void test(){
        Sytem.out.println("P->test");
    }
}
//派生类(子类)
public class Student extends Person{
    public static void test(){
        Sytem.out.println("S->test");
    }
}
Person p = new Student();
p.test();//调用了Person中的test
Student s = new Student();
s.test();//调用了Student中的test
Override 重写
- 快捷键Alt+Insert
 - 只和非静态方法有关
 - 重写后调用方法会执行重写后方法
 - 重写对象关键字public
 - 子类重写父类的方法
 - 为什么重写
- 父类的功能子类不一定满足
 
 
注:
- 方法名必须相同,方法体不同
 - 参数列表必须相同
 - 修饰符范围可以扩大但不能被缩小 public>Protected>Default>private
 - 抛出的异常可以缩小但不能扩大
 - static,final,private 方法不可重写
 
多态
多态是方法的多态而不是属性的
一个类能调用的都是自己的或从父类继承的
父类和子类要有联系否则类型转换异常
存在条件:继承关系,方法需要重写,父类引用指向子类对象 e.g.
Father f1 = new Son();
Sytem.out.println(X instanceof Y);//检测是否编译可通过(是否有父子关系)通过为true,不通过为false
类型转化
低转高可以直接转
Person p = new Student();
- 高转低强制转换
 
Student student = (Student) p;
 或者
((Student) p).子类方法;
 直接用子类方法
- 子类转换为父类可能丢失自己本来的方法
 
(Java)面向对象的三大特征的更多相关文章
- Java面向对象的三大特征
		
Java面向对象的三大特征 java面向对象的三大特征:“封装.继承.多态”.更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. ...
 - Java面向对象的三大特征和五大原则
		
Java面向对象的三大特征 封装 封装(Encapsulation)是指属性私有化,根据需要提供setter和getter方法来访问属性.即隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问 ...
 - JAVA面向对象:三大特征 封装讲解
		
一.JAVA封装 1.封装的理解 封装是 JAVA 面向对象思想的 一 种特性,也是一种信息隐蔽的技术 2.封装的原则 将类中的某些信息隐藏起来,来防止外部程序直接访问,通过类中的方法实现对隐藏的信息 ...
 - Java面向对象的三大特征详解
		
一.封装(Encapsulation) 封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保 ...
 - 封装是java面向对象编程三大特征之一。 简单的属性封装
		
package com.cqvie.Hello; class Person { private int age; private String name; public void tell() { ...
 - Java学习:面向对象的三大特征:封装性、继承性、多态性之继承性
		
面向对象的三大特征:封装性.继承性.多态性. 继承 继承是多态的前提 ,如果没有继承,就没有多态. 继承主要解决的问题就是:共性抽取. 继承关系当中的特点: 子类可以拥有父类的“内容” 子类还可以拥有 ...
 - 谈谈Java面向对象的三大特性
		
Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...
 - Java的OOP三大特征之一——继承
		
Java的OOP三大特征之一——继承 子类继承父类的特征和行为(属性和方法),使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父类更通用.子类 ...
 - Java学习笔记二十五:Java面向对象的三大特性之多态
		
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
 - Java学习笔记二十一:Java面向对象的三大特性之继承
		
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
 
随机推荐
- SpringCloud之网关zuul
			
1.微服务网关介绍和使用场景 1)什么是网关 API Gateway,是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控.缓存.限流等功能 统一接入 智 ...
 - SpringCloud商品服务调用方式之feign
			
简介:改造电商项目 order-service服务 调用商品服务获取商品信息 Feign: 伪RPC客户端(本质还是用http) 官方文档: https://cloud.spring.io/sprin ...
 - JDBC中的元数据——2.参数元数据
			
package metadata; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.Pre ...
 - JDK1.5新特性之注解
			
时间:2017-1-2 20:14 --注解的概述 注释是给人看的,而注解是给程序(框架)看的. 在Servlet3.0中可以使用注解来替代配置文件,开发者就不用再写配置文件了,而是写注解 ...
 - 如何让BootStrap栅格之间留出空白间隙呢?
			
BootStrap栅格之间留出空隙 BootStrap栅格系统可以把我们的container容器划分为若干等分,如果想要每个部分之间留出一定的空隙,我们很可能首先想到的方法就是用margin外边距来使 ...
 - mysql最强
			
MYSQL 与mysql第一次亲密接触 数据库相关概念 一.数据库的好处 二.数据库的常见概念 ★ 三.数据库存储数据的特点 四.常见的数据库管理系统 MYSQL的介绍 一.MySQL的背景 二.My ...
 - T-SQL - query01_创建数据库|创建表|添加数据|简单查询
			
时间:2017-09-29 整理:byzqy 本篇以"梁山好汉花名册"为例,记录MS SQLServer T-SQL语句的使用,包含命令: 创建数据库 | 删除数据库 创建表 | ...
 - MySQL-存储引擎-Myisam
			
mysql> create table myisam_char(name char(10)) engine=myisam; Query OK, 0 rows affected (0.01 sec ...
 - BUUCTF-[CISCN2019 华东南赛区]Web4
			
BUUCTF-[CISCN2019 华东南赛区]Web4 看题 点击Read somethings,会跳转到 http://3fd8b1f9-614f-47ff-8e79-0f678e7bb4eb.n ...
 - Java 学习:数据类型
			
前言:Java属于强类型语言 强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用 优势就是安全性高,但劣势速度慢 数据类型 Java的数据类型分为两大类: 基本类型(primit ...