1. 封装

方法:将属性值修饰为私有,提供get和set方法。造成所有对对象的访问都是通过方法的调用来完成(配合this的使用)

结果:用户不能直接随意改变一个对象内的属性,必须通过调用方法(验证)来访问和修改

2. 面向对象三大特性:继承

    关键字 extents
修饰符|使用范围 |继承与否
---|--:|---
Public| 公开使用 |可以继承|
Protected|在本类、同包其它类和子类、其它包的子类|可以继承
(default)|在本类、同包其它类|包的子类中可以 承
Private|在本类内部使用|不能被继承(实际被继承,无权访问)
注意:构造方法不
能被继承
继承的对象创建过程:
C extends B
B extends A
创建C 对象: //不考虑静态代码块,若有静态代码块,先通过递归的由基类到派生类加载代码块分配空间
初始化A的属性
调用A的构造方法
初始化B的属性
调用B的构造方法(默认调用A的构造,super())
初始化C的属性
调用C的构造方法(默认调用B的构造,super())
方法覆盖:
定义:子类用自己的方法实现替换掉能继承自父类的方法实现
要求:方法名相同、参数表相同、返回值类型相同、(访问修饰符相同或范围更广)
this关键字的使用
- 本身是引用,代表当前对象。在类中访问自己的属性和方法时,如果不加this,则自动默认this调用,当在局部方法内出现与类属性同名的局部变量时,如 加this表示类的成员变量,不加则代表是局部变量。
- 调用本类的无参构造方法
- this(…),调用本类中其他相应参数表的构造方法
注意:在使用this时,必须将this关键字放在构造方法内的第一行 Super关键字:
是个引用,指向父类的对象,用例调用父类的方法,super.父类方法( ),super须在方法内使用
可以用在构造方法内,指明调用父类的构造方法,用法和this相同。但必须放在构造函数的第一行,

例子:

class A {
public A(int i){}
}
class B extends A{
} 程序出错,系统默认为
class A {
public A(int i){}
}
class B extends A{
public B(){
super();
}
}

3. 面向对象三大特性:多态

    没有继承就没有多态
Java实行的单继承
多态的开闭原则:(继承和多态)对修改关闭,对扩展开放
利用多态,可以使代码针对父亲展开编程,使代码更通用
多态的两种常见的应用场景:
把多态应用在方法的参数上:
m (A a) :方法可以接受A类,也可以接受A的子类对象 把多态应用在方法的返回值类型上:
A m() :方法返回的可以是A类或A类的某个子类对象 例子:父类对象引用子类对象,以方便扩展新的子类而不需改变方法代码:
例子1:
public class test {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
eats(dog);
eats(cat);
}
static void eats(Animal animal){
animal.eat();
}
}
class Animal {
public void eat(){
System.out.println("吃的方法");
}
}
class Dog extends Animal {
public void eat(){
System.out.println("狗吃骨头");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("猫吃小鱼");
}
}
例子2
public class ExcEmployee{
public static void main(String[] args){
Employee[] es = new Employee[4];
es[0] = new ProductEmployee("Yangdd",31);
es[1] = new SalesEmployee("Wucj",36);
es[2] = new ManageEmployee("Xusy",29);
es[3] = new CeoEmployee("Huxz" , 16);
for(int i = 0 ; i <es.length ; i++){
es[i].work();
}
double result = 0 ;
int count = 0;
for(int i = 0 ; i < es.length ; i++){
if (es[i] instanceof ManageEmployee){
count++;
result+=es[i].getAge();
}
}
System.out.println(result/count); //平均年龄
}
}
class Employee{
private String name;
private int age;
public Employee(){}
public Employee(String name){this.name = name;}
public Employee(String name , int age){ this(name);this.age = age;}
public int getAge(){ return age;}
public void setAge(int age){this.age=age;}
public void work(){ }
}
class ProductEmployee extends Employee{
public ProductEmployee(String name , int age){super(name,age);}
public void work(){ System.out.println("在车间劳动");}
}
class SalesEmployee extends Employee{
public SalesEmployee(String name , int age){super(name,age);}
public void work(){ System.out.println("出差跑客户");}
}
class ManageEmployee extends Employee{
public ManageEmployee(String name , int age){super(name,age);}
public void work(){ System.out.println("在办公室斗地主");}
}
class CeoEmployee extends ManageEmployee{
public CeoEmployee(String name , int age){ super(name,age);}
public void work(){ System.out.println("在会议室开会");}
}

2.java三大特性的更多相关文章

  1. Java 三大特性——封装、继承、多态

    一.封装 封装,实际就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 概念:在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节 ...

  2. JAVA三大特性之多态

    面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据 ...

  3. JAVA三大特性之一——封装

    自学java已经有一段时间了,但是感觉对于很多知识点还是有必要总结和整理一下,下面我就来说一下我对JAVA三大特性之一——封装特性的认识和理解. 封装,从字面意思可以看出来,就是包装,也就是把我们写好 ...

  4. JAVA基础第二章-java三大特性:封装、继承、多态

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  5. Java三大特性

    Java 三大特性,算是Java独特的表现,提到Java 的三大特性, 我们都会想到封装, 继承和多态 这是我们Java 最重要的特性. 封装(Encapsulation) : 封装:是指隐藏对象的属 ...

  6. java三大特性:封装、继承、多态

    Java三大特性之封装   一.定义 封装性指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 二.使用封装的好处: 1 ...

  7. 浅谈Java三大特性

    Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...

  8. 浅析Java三大特性封装、继承、多态,及作业分析

    前言 本次博客衔接上次博客,作为这一阶段Java学习的分析.上一篇博客着重介绍了Java的OO编程思维,面向对象与面向过程的区别.本篇博客重心在Java的三大技术特性,附带作业分析. Java三大特性 ...

  9. JAVA三大特性之三——多态

    作为JAVA的三大特性之一,多态性是很多人都没有弄清楚的一个重要特性,今天我就来从我所理解的角度来说一下. 首先,从他的字面意思来理解,多态,从其字面来理解就是多种形态,多种表现形式.根据这些,我最能 ...

  10. Java 三大特性

    一.Java第一大特性:封装   封装:将属性私有化,提供共有方法访问私有属性,实现细节隐藏,并且程序也更加容易维护. class Dish { private final String name; ...

随机推荐

  1. mac如何开启两个vmware虚拟机

    转载链接:https://blog.csdn.net/aifore/article/details/87833088

  2. 从Netty EventLoop实现上可以学到什么

    本文主要讨论Netty NioEventLoop原理及实践,关于Netty NioEventLoop,首先要知道NioEventLoop是什么,为什么它会是Netty核心Reactor处理器,实现原理 ...

  3. React躬行记(14)——测试框架

    测试不仅可以发现和预防问题,还能降低风险.减少企业损失.在React中,涌现了多种测试框架,本节会对其中的Jest和Enzyme做详细的讲解. 一.Jest Jest是由Facebook开源的一个测试 ...

  4. linux常规网卡配置正确,但是出不了路由的解决方法

    netstat -rn #查看是网关  route add default gw 192.168.128.2 dev eth0  # 手动加入网关地址   此类情况容易出现在双网卡配置后

  5. 【漏洞复现】Apache Solr远程代码执行(CVE-2019-0193)

    0x01 概述 Solr简介 Apache Solr 是一个开源的企业级搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr ...

  6. Vue之组件及组件通信

    组件之全局组件 //注意:需要在Vue实例化之前注册全局组件,使用Vue.component("组件名",{ template:`组件模板` }) Vue.component(&q ...

  7. P2669 金币

    题目描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第三天),每天收到两枚金币:之后三天(第四.五.六天),每天收到三枚金币:之后四天(第七.八.九.十天),每 ...

  8. salesforce lightning零基础学习(十六) 公用组件之 获取字段label信息

    我们做的项目好多都是多语言的项目,针对不同国家需要展示不同的语言的标题.我们在classic中的VF page可谓是得心应手,因为系统中已经封装好了我们可以直接在VF获取label/api name等 ...

  9. Good Bye 2017 A B C

    Good Bye 2017 A New Year and Counting Cards 题目链接: http://codeforces.com/contest/908/problem/A 思路: 如果 ...

  10. 大型情感剧集Selenium:4_老中医教你(单/多/下拉框)选项定位 #华为云·寻找黑马程序员#

    今天讲什么 讲什么标题说了,讲selenium的单选.多选.下拉框选项定位.但其实这东西,没什么太多说的,又比较枯燥,那该怎么让这一集selenium的课程变得有趣呢?有请老中医,哈哈- 怎么样,这个 ...