面向对象(oop)01
程序=算法+数据结构
面向对象的三大特征:封装、继承、多态
封装:(称隐藏数据)就是将数据和行为组合在一个包中,并对对象的使用者隐藏数据的实现方式
实现封装的关键:绝对不能让类中的方法直接访问其他类的实例,程序仅仅通过对象的方法与对象数据进行交互,封装赋予了对象黑盒的特征,提高了代码的重用性和可靠性
类之间的关系
1.依赖(uses-a)
2.聚合(has-a)
3.继承(is-a)
日期类对象(Date)
System.out.println(new Date().toString());
//Mon Mar 08 09:56:19 CST 2021
System.out.println(LocalDate.now());
//2021-03-08
日期类对象(LocalDate日历对象)
LocalDate lDate = LocalDate.of(2021, 1, 1);//构造一个时间
LocalDate aDate = lDate.plusDays(50);//计算2021-1-1;50天后的时间
System.out.println(aDate.getDayOfMonth());//返回50天后的月份2
System.out.println(aDate.getYear());//返回50天后的年份2021
System.out.println(aDate.getMonthValue());//返回50天后的天2
对象
对象必须是一个具体的事物
类
把一组对象共同拥有的属性和方抽取出来,形成的数据类型,称之为类
类和对象的关系
类相当于是一个模型,一类可以产生N个对象
类中拥有的那些属性和方法,它产生的N个对象也会有自动的属相和方法
类产生的具体实例,就是对象
一个类可以产生多个对象
类产生对象,对象抽象出类
类只是一个抽象的概念,不存在,对象是一个具体的事物
对象数组:可以存储多个对象
例如
Studengt [] arrs= new Student[3];
一个类中可以包含多个方法
\1. 主方法:
Public static void main(String [] args){}
\2. 普通方法:
\1. 无返回值,无参数
\2. 有返回值,无参数
\3. 无返回值,有参数
\4. 有返回值,有参数
Public void(){}
()中没有内容就是没有参数
有void返回值就是null
在声明方法时,括号中的参数称之为形参,形参没有具体的值,只是起到一个占位符的作用,实际调用的方法时传递的参数叫做实参。
方法自己调用自己叫做递归调用
封装
将属性和方法组成一个不可分割的整体
属性全部私有,通过公有的方法去访问对象的属性和方法
内部类
public class Order {
public void name() {
System.out.println("这是外部类的一个方法");
}
class Foler {
public void name1() {
System.out.println("这是一个内部类");
}
class shu {
public void name2() {
System.out.println("这是一个内部里面的内部类类");
}
}
}
}
//测试类
public class Test02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Order order = new Order();
Order.Foler foler = order.new Foler();
order.name();
foler.name1();
}
}
继承
extends:继承
继承的目的
复用,提高代码的重复利用
子类可以继承父类里面的所有非私有的属性和方法除构造方法外
finalize垃圾回收的方法
@Override
protected void finalize() throws Throwable {
super.finalize();
}
super:在子类中super默认存在,调用的是父类的无参的构造方法
this 默认当前的实例化对象(一般可以省略)
重载overload
定义:在一个类中,方法名相同,参数列表不同(个数,顺序,类型)
目的:为了不取那么多的方法名
重写override
要求:父类的方法和子类要一模一样,包括返回值类型和参数列表
目的:父类的方法满足不了子类的需求,所以需要重写父类的方法
面向对象(oop)02
命名规则:类 首字母必须大写
方法名:以字母 数字 下划线 及美元符号组成,且不能以数字开头 不能是系统关键字
遵守驼峰命名法
类名 :不能具体,必须是抽象的一个名称,不能特指
在写代码前,强调一定要写注释
有new 就是在堆里面的
什么是javaBean
就是属性私有,编写公有的访问方法,属性使用Private修饰
在面向对象里
变量分为局部变量和成员变量
局部变量只能在本方法中使用而成员变量可以在本类任何地方使用
访问修饰符
Private 默认不写 protected public
Private 只限制在本类中使用
Protected 只能在本包中使用和默认唯一的区别是protected是用在子类
Public 修饰是可以在整个项目中使用
Static(静态)修饰
写静态不用new 对象,只要用类名.方法名就可以调
静态方法只能调用 静态属性
静态代码块 语法static{}静态块最先执行,不用调用,只执行一次
什么是构造方法,有什么用?什么时候用?
用代码来实现构造方法一个对象的赋值与打印
构造方法:构造方法是与类同名,没有返回值
作用:用来初始化成员变量
什么时候用:实例化对象的时候系统会自动调用构造方法
单例模式(饿汉模式)
public class Student {
private static Student student = null;//因为静态方法只能访问静态属性,所以将属性私有化
private Student() {//为了让调用者不能直接new对象,所以将构造方法私有
}
public static Student getInstance() {//因为构造方法私有了所以不能实例化对象来调用方法 所以就得 加一个static静态来修饰,直接用类名来访问,不用new对象
if (student == null) {
student = new Student();
}
return student;
}
}
单例模式(懒汉模式)
static Student student=new Student();