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. 2019-10-23:渗透测试,基础学习,DVWA,Medium和Hight级别sql注入

    VWA的Medium和Hight级别sql注入 一,Medium级 服务端代码 <?php if( isset( $_POST[ 'Submit' ] ) ) {      // Get inp ...

  2. 3sql

    -------------------- 三范式-- 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列. -- 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个 ...

  3. C#异步案例一则

    场景 生产者和消费者队列, 生产者有多个, 消费者也有多个, 生产到消费需要异步. 下面用一个Asp.NetCore Web-API项目来模拟 创建两个API, 一个Get(), 一个Set(), G ...

  4. Lua和C交互的简易教程

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52458051 本文出自: [HansChen的博客] Lua栈 要理解Lua和C++ ...

  5. 2019 牛客网 第七场 H pair

     题目链接:https://ac.nowcoder.com/acm/contest/887/H  题意: 给定A,B,C问在[1,A]和[1,B]中有多少对x,y满足x&y>C或者x^y ...

  6. 解决WebUploader 上传按钮按F12 才行的问题

    遇到了 WebUploader 插件的上传按钮点击无效(此时鼠标在按钮任何位置时,按钮都没变化).按F12 之后才有反应(此时鼠标在按钮任何位置时,按钮颜色都会变深) 的问题,网上查到一些答案,找到了 ...

  7. 【数据结构】之栈(Java语言描述)

    在前面的[这篇文章]中,我简单介绍了栈这种数据结构的操作功能,并使用C语言对其进行了代码的编写. Java的JDK中默认为我们提供了栈这种数据结构的API—— Stack . Java中的Stack类 ...

  8. re实战记录

    re实战记录 针对网页中的空格符 一般使用的.,但是它不能匹配\n,所以使用[\s\S]或者[\d\D]匹配所有字符 import re l1=r''' <div class="thu ...

  9. 转:Eclipse中创建Maven版的Web工程(详解)

    一.搭建步骤 ♦首先创建一个Maven的Project,如下图: ♦点击Next,勾选 Create a simple project ♦点击Next,注意Packing要选择war,因为我们创建的是 ...

  10. MySQL的存储(二、创建表并插入)

    创建表 首先创建一个 spiders的数据库 cursor.execute("create database spiders default character set utf8" ...