Java(OOP)
概述
面向对象的本质是:以类的方式组织代码,以对象的组织数据。可分为封装,继承,多态。
一些方法的细节
静态定义(static)和动态定义(类的实例化):前者我们可以直接利用定义里的方法,后者我们需要new一个对象来执行。
public class Test01 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
change(person);
System.out.println(person.name);
}
public static void change(Person person){
person.name="xxx";
}
}
class Person{
String name;
}
构造器
用来对类进行一个初始化的构造,使用new必须要构造器,注要是否有参数,可以用Alt和Insert来快捷构造。
public class Person {
String name;
public Person(){
}
public Person(String name){
this.name=name;
}
}
封装
提供接口来操作,避免用户直接访问数据,如:
private String name;
public String getName(){
return this.name;
}
public String setName(String name){
return this.name=name;
}
继承
子类(派生类)和父类,可以理解为一棵树的关系。
Super可以访问父类的public内容,同时会继承父类的构造器。
public class Person1 extends Person{}
多态
1.多态是方法的多态
2.父类和子类,有联系,类型转化异常
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象(static,final,private不能重写)
强制转化:
1.父类引用指向子类对象
2.把子类转化为父类,向上转型
3.把父类转化为子类,向下强制转型
抽象类&接口
抽象类:1.不能new这个抽象类,只能靠子类实现
2.抽象类可以写普通的方法
3.抽象方法必须再抽象类中
接口可以实现多对一(为多继承):
public interface UserService {
public abstract void add(String name);
}
//实现规范
public class UserServiceImpl implements UserService,TimeService{
@Override
public void add(String name) {
}
@Override
public void timer() {
}
}
异常机制
try catch (finally),捕获异常,可以捕获多个异常,然后让程序继续执行。(ctrl+alt+t)
public static void main(String[] args) {
int a=1,b=0;
try {
System.out.println(a/b);
} catch (ArithmeticException e){
System.out.println("Error!!!");
} finally {
System.out.println("finally!!!");
}
}
public void test(int a,int b){
if(b==0){
throw new ArithmeticException();
}
}