oop总结
1.类与对象
1.1 抽象的,泛指的,是指从某一类具有相同属性和方法的对象中抽取出来
class代表类
1.2.类的作用;实例化对象,方法,工具类
1.3 类中分两大块:属性(成员变量) 方法(成员方法)
1.4 类如何实例化对象? new
// Person p = new Person();
// p.name = "张三";
// p.sex = "男";
// p:对象名
// Person p1 = new Person();
1.5 什么是对象?具体的,实实在在的
2. 属性与方法
//方法的调用:对象名.方法名
//匿名对象调用方法:new 类().方法名
// new Person().getA();
//
// int c = new Person().getD(10, 20); //实参
// System.out.println(c);
3.对象数组
3.1 类名[] array=new 类名[];
3.2 取出 先找到对象,取出对象,
再在对象中找到方法或者属性;
3.3 数组查找
用for和if;
3.4 排序
for(int i=0;i<数组名.length-1;i++){
for (int j=0;j<数组名.length-1-i;j++){
if(数组名[j].get方法名()<数组名[j+1].get方法名){
类名 da=数组名[j];
数组名[j]=数组名[j+1];
数组名[j+1]=da;}
}
}
3.5static 封装 单例模式
static 静态,static用来修饰属性、方法
用static修饰属性:共有的属性------实例化出来的对象,用static修饰的具有相同的值。
用static修饰方法:能通过类名直接调用
封装
属性私有化,公开set和getfangfa;
oopd三大特征之一;
单例模式
只能实例化一次;
实现单例式的三个步骤:
第一:私有化构造方法
private 类名(){
}
第二:公开一个代理方法
private static 类名 方法名(){
类名 d=null;
if(count<1){
d=new 类名();
count++;
}
return d;
}
第三:私有化一个静态属性,用来统计new的个数
private static int count=0;
3.6 继承 super 重写
oop三大特征之一
继承 会让两个类产生一种关系 父类-子类
父类:从子类中抽取出共同的属性和共同的方法,放到父类中,
然后让子类继承父类,那子类就具有父类的属性和方法
继承的关键词:extends
1.父类中私有的属性和方法,子类是不能继承的
2.父类的构造方法,子类是不能继承的
3.父类是跨包的,除public以外的都不能被继承
super 子类用来访问父类的方法或者属性
super.方法 super.属性
super()只能放在子类的构造方法中,并且只能放在第一行
重写 子类重写父类的方法;
方法名 +快捷键
3.7 多态
用继承在多个类中用;
Pet p = new Ostrich(); //里氏替换原则:父类的类型 ,子类的对象
3.8 抽象
//1.抽象 abstract
//abstract能修饰什么?类,方法
//用abstract修饰类叫抽象类
//特点:抽象类不能被实例化,但能被继承
//用abstract修饰的方法叫抽象方法
//特点:1.抽象方法没有方法体
// 2.抽象方法必须放在抽象类中,抽象类中的方法不一定是抽象方法
// 3.抽象类被子类继承后,那么子类要重写父类中的抽象方法,除非子类也是抽象类
3.9 接口 final 修饰符
.修饰符(重点)
// 第一种:类修饰符 -- 修饰类的
// 第二种:属性修饰符 --修饰属性的
// 第三种:方法修饰符 --修饰方法的
// 第四种:访问修饰符(重点)
// private (私有的)
// 默认 (友好的)
// protected (受保护的)
// public (公共的)
//2.final 最终、终极
//final能修饰什么? 能修饰 类、属性、方法
//用final修饰 的类----终极类:特点是不能被继承,但能被实例化;
//用final修饰 的属性--常量 (重点)
//常量 :值是固定不变的
//常量必须要赋值
//常量名全部大写
//常量是一个特殊的变量
//常量用final来修饰
//用final修饰的方法----终极方法:不能被重写
创建接口类 public interface
//4.接口(重点)
//接口: interface
//类要实现接口:implements
//接口中的方法全是抽象方法
//接口中的方法全部要公开public
//接口不能被实例化
//接口可以被多实现
//接口中的属性全部是静态常量
3.10 异常
System.out.println(10/3);
// } catch (Exception e) {
// // TODO: handle exception
// e.printStackTrace();
// } finally{
// //不管报不报异常,finally中的代码都会执行
// System.out.println("哈哈");
// }