阿里云appcode + 具体地址
多态:同一个行为具有多个不同表现形式或形态的能力
如打印可为彩色或黑白;空调可制冷或取暖
实现多态的关键:接口:面向接口编程
抽象的类型,只提供方法的定义
实现类:接口的具体体现,实现每一个接口方法的功能
根据输入内容不同动态产生不同的接口实现,实现的过程要被额外方法进行封装
通过方法处理输入数据判断,决定使用的实现类
使用不同的实现类覆写
创建接口的对象,调用接口定义的方法完成不同的输出
方法根据不同情况return new xxx(实现类)
接口 对象1 = new 实现类()或对象2.方法(数据)
继承
访问修饰符protected:可以被同一包中的类与继承类访问
extends 前为子类,后为父类
子类会继承父类的(default)/protected/public修饰的成员变量和方法
不会继承private
封装:隐藏功能的实现细节
方式:利用对象和方法
使用者只需进行调用即可
优点:1.利于维护
2.互不影响
面向对象:封装 继承 多态
修饰符
笔记
成员变量就是属于对象的变量;
对象名和类名一样,必须是首字母大写且具有一定的意义,不是随便拼凑的字母。
访问修饰符作用范围
接口:只提供方法的定义
接口的实现类:接口定义方法的实现
接口的实现就是可以一个接口实现多个功能,就是存在多种形态,根据你传递不同的参数调用不同的方法
继承是子类继承父类的特征。
成员变量应该设置为私有化,这样可以防止属性被直接变化,同事编写Getter方法和Setter方法提供读取和改变数据的方式
封装就是用对象和方法来隐藏功能的具体实现。工具类就是封装的体现了
实例一个对象后,使用该对象调用类的方法:对象名.方法名(); 如果该方法有返回值则需要声明一个同类型的变量接收。//String a = 对象名.方法名();
多态是同一个行为具有多个不同表现形式或形态的能力。
接口是一个抽象的类型。
面向对象三大特征:封装、继承、多态。
包:把功能相似或相关的类组织在同一个包中。
现实中,肉类加工厂封装了加工的过程、苹果公司封装了芯片技术实现的过程等
概念:
封装就是隐藏功能的实现细节
对象和方法是实现封装的直接途径
良好的封装使代码更好的阅读和维护
好处一:把常见的排序算法都封装在一个类中,需要哪个就调用哪个。
好处二:使用者维护使用代码,服务提供者维护服务代码,两者互不影响。
package com.imooc.objectproject.sample3;
//张三开发的排序算法类
public class Algorithm {
/*
*传入五个数,控制台打印升序效果
* @param a 第一个数
* @param b 第二个数
* @param c 第三个数
* @param d 第四个数
* @param e 第五个数
*/
public void sort(int a , int b , int c , int d , int e){
//冒泡排序法
int [] arr = {a,b,c,d,e} ;
for(int i = 0;i < arr.length - 1;i++){
for(int j =0;j < arr.length - 1 - i;j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i] + " ");
}
}
public static void main(String[] args) {
Algorithm algorithm = new Algorithm();
algorithm.sort(82,88,988,223,184);
}
}
的
public String is OddNumber(int num){
}
封装的概念:
将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
多态的概念
同一个行为具有多个不同的表现形式或形态的能力,根据输入的内容不同,去产生不同的接口实现,实现多态的关键是接口
多态的前提
要有继承或实现关系
要有方法的重写
要有父类引用指向子类对象
引用变量的两种类型
编译时类型:由声明时的类型决定。
运行时类型:由实际对应的对象类型决定。
优点:
提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
缺点:
不能使用子类的特有成员
接口:
抽象的类型,只提供方法的定义
实现类:
接口的具体实现,要实现每一个接口方法的功能,一个接口可以拥有多个实现类
继承
extends 关键字⽤于类的继承;
extends 关键字后⾯是⽗类,关键字前⾯是⼦类;
⼦类会继承⽗类的(default)/protected/public 修饰的成员变量与⽅法
修饰符
public 限定符:被 public 修饰不管在哪里都可以访问。
private 限定符:被 private 修饰的成员变量、方法、类等只允许在当前类的内部进行访问。
包package
包的命名规范:
包采用“逆域名法”进行命名,用“.”分割,单词全部小写
标准格式:域名后缀.组织机构名.项目名[.模块名].包的职能
public 限定符:被 public 修饰不管在哪里都可以访问。
方法method
方法method是用于完成特定功能的整段代码(封装)
成员变量
成员变量是隶属于对象的变量,用于保存对象的静态特征,同类型的不同对象拥有相同的成员变量,但是值彼此独立
成员变量的使用:
类名 对象名 = new 类名();//new关键字是创建实例对象最重要的标志
成员变量和局部变量的区别:
在类中位置不同:成员变量在方法外,局部变量在方法内或者方法声明上;
在内存中的位置不同:成员变量在堆内存中,局部变量在栈内存中;
生命周期不同:成员变量随着对象的创建而存在,随着对象的消失而消失,局部变量随着方法的调用而存在,随着方法调用完毕而消失
初始化值不同:成员变量有默认的初始值。局部变量没有默认的初始值,必须在定义赋值后才能使用