面向对象简介

首先在在了解面向对象之前。我们要先理解什么是类,在同一个JAVA文件中我们可以创造多个不同的类名,但只能有一个可以用public 修饰,用public修饰的类名必须与java文件的名字一致。
访问权限修饰符共有:
1.public(共有的)
2.private(私有的)
3.protected(受保护的)
4.如果不用修饰符进行对类的修饰,系统会有默认的。
创建类的格式 :Class 类名{java代码 } 类名必须符合命名规则
文件中有类的存在了,我们就要考虑如何创建对象了,对象不可凭空而来,在面向对象编程中必须要自己进行对象的创建。
语法: public 类名(【参数】){ java代码}
参数怎么写:变量 变量的类型 名字 注意类名括号里面的参数可有可无,没有要求。
对象创建完成之后,我们需要开始构造方法,其构造方法分为两种
1.无参构造(创建对象的时候不见进行赋值)
2.有参构造(是在new对象给对象赋值,给对象的属性赋值。如果类中没有属性就不能创建有参数构造方法,参数的个数可以是多个。不要超过属性的个数。 参数的名字可以与你要赋值的属性的名字一致,如果一致的话必须使用this关键字来进行参数和属性的区分。如果不用this就必须将参数的名字和属性的名不一样,但是参数的类型必须与要赋值的属性一致。)
构造方法的调用, 当类中没有任何构造方法的时候,会有一个默认的无参数构造方法,但是一旦类中有了有参数构造方法,就不会再有默认无参数构造方法。如果你在类中写了有参数构造方法,就一定要把无参数构造方法也显示的写出来。在创建对象的时候根据有没有传参数来调用
new Person(); 根据你空号中是否传值,不传值代表调用的是无参数构造方法 如果传参数:根据参数的个数调用对应有参数构造方法,实际传的参数的类型必须与你要使用的有参数构造方法的参数类型以及类型的顺序一致
属性 用来描述对象或者类的静态部分
属性分为全局属性和局部属性:
全局属性归当前类所有,他会有默认值,可以被当前所有非静态static方法调用。
局部属性归当前区域(方法)所有,局部变量在使用之前必须进行赋值,没有默认值。
当局部变量与全局变量名字相同时,采取局部优先原则。
注意: 静态属性可以被非静态方法和静态方法直接调用。非静态属性只能被非静态方法直接调用!!!
具体如何面向对象编程,每个程序员都有自己不同的理解,我个人才开始接触java的一个小白,很多东西根本无法和届类大佬相比。具体的方法是写在类里面的,其创建方法如下;
【访问限定符】 【修饰符】 返回值类型 方法名(【参数…】){方法体 java代码}
访问限定符:限定方法的访问作用域 public
修饰符:static静态 final最终 abstract抽象
返回值类型: 有返回值(可以是任何类型:基本、引用),如果方法有返回值name必须使用return关键字并且返回的内容必须与返回值类型一致 无返回值void
参数:可以是任何类型 可以是多个
方法的使用:
要想使用方法:如果方法没有使用修饰符进行定义,那么需要使用对象.方法名(【参数】)进行调用;
方法创建的几种方法;
1.无参数无返回值
//无参数无返回值方法
public void study(){
System.out.println(“我在学习”);
}
2.无参数有返回值
//无返回值有参数的方法
public void study(String name){
System.out.println(this.name+“在学习”);
}
3.有参数有返回值
public Fangfa getStu(Fangfa stu){
System.out.println(stu.name);
return stu;
}

4.有参数无返回值
//有返回值无参数方法
public String study1(){
System.out.println(“我是你爸爸”);
return “1234456789”; //必须放在方法最后
}
有返回值的创建方法 必须使用return关键字,并且必须放在方法体的最后一行。Return返回的内容必须与方法规定的返回值类型一致。如果没有return关键字程序就会报错。 调用方法的时候返回值可以不接收,可以直接使用输出语句输出。如果要接收返回值必须使用与返回值类型一样的变量进行接收。
方法的重载:
对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候就会构成方法的重载。跟返回值没有关系。
重载关心的只是参数,有参无参,参数类型不同,参数数量不同,不同类型的参数顺序不同,都可以实现方法的重载。
方法的调用:
(在同一个包中的类,并且都是用public定义的)
1.静态方法可以直接调用静态方法,不可以直接调用非静态方法(必须创建一个对象)
2.非静态方法可以直接调用非静态方法和静态方法。
在不同类之间,非静态方法需要通过对象才能调用非静态方法。
非静态方法既可以通过对象调用静态方法又可以通过类名直接调用(由于对象的调用方式属于非静态调用方式,所以建议使用类名直接调用静态方法)
面向对象四大特性:
1.抽象
2.封装
我自己有的属性我不想让你其他人直接那过去用。我们自己写一些方法,如果你想用我的属性,那你可以通过我自己的方法来进行使用。 获取属性
给属性赋值
a.对私有化的属性进行封装
b.封装就是使用方法来进行对属性的操作
一般封装的方法都称为get()和set()赋值,
每一个私有属性都对应的有一个get和一个set方法,方法的名是get或者set加上属性名字的首字母大写。 getName setName
Get 方法有返回值,且返回值的类型与属性的类型一致。
public int getAge() {
return age;
}
Set方法没有返回值 但是有参数,参数的类型必须与属性的类型一致。
public void setAge(int age ) {
this.age=age;
}
3.继承
两个类拥有关系,使用extends关键。
Public class aa extends bb{} AA与BB是子父类关系。Aa是子类 BB是父类。(构造方法不能被继承)
继承的特点:
1.只能是单继承 一个类中能有一个直接父类。
2.一个类可以有多个子类。
3.子类继承了父类就拥有父类的所有属性和方法
子类可以有自己的独有的属性和方法。
4.可以在子类中写一个和父类一样的方法,方法的重写:在两个类中(子父类),方法的名字和参数以及参数的类型、顺序、个数都一样。方法的返回值也必须一致
5.如果A类继承了B类,B类继承了C 。那么A类也就拥有了C类的所有属性和方法
在使用方法的时候,一个类同时new出来多个实例对象,不同对象调用方法的时候,this代表不同的对象。
Super代表父类对象 代表当前对象的父类
4.多态
同一个对象拥有多种状态:
向上转型 子类转父类 Car cx = new JiaoCar();
编译时状态: 子类=子类
运行时状态: 子类=父类 将子类独有属性和方法进行隐藏
向下转型 父类转子类 JiaoCar jc = (JiaoCar)cx;
必须是进行向上转型之后的那个父类对象,进行强制转换赋值给子类对象。
转型之后就可以调用子类独有的属性和方法。

instanceOf 判断两个是不是子父类
将向上转型时候得到的对象与父类对象进行比较,看看是否是同类型的对象。
boolean bool = cx instanceof Car;

多态的体现:重写和重载
1.没有继承就没有多态的产生
2.父类引用指向子类对象,父类可以调用父类的方法。如果子类重写子类。

Object 类
每一个类都继承自Object类
toString 返回对象的字符串表示形式 每一个对象在直接输出的时候默认调用object的toString。

getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
可以重写toString方法,不是只把object的方法重写一遍。二是为了让我们能够更加清楚的看到我们的对象到底有什么内容。
以后的所有类中必须重写toString方法。

Equals 也是Object的方法
当对象与对象进行比较的时候:使用比较的是对象的地址,使用equals默认比较的也是地址值,我们可以重写equals方法,然后根据自己重写equals里面的比较方式进行比较
@Override
public boolean equals(Object obj) {
//直接比较对象的name属性值是否相等
Car c= (Car)obj;//需要进行强制类型转换
if(this.name
c.name) {
System.out.println(“1111111111”);
return true;
}
return true;
}
包的介绍和访问限定符:
1)使用import语句导入类,在前边的程序中,我们已经使用过,其应用的一般格式如下:
import 包名.*; //可以使用包中所有的类
或: import 包名.类名; //只装入包中类名指定的类
2)在程序中直接引用类包中所需要的类。其引用的一般格式是:
包名.类名
例如,可以使用如下语句在程序中直接创建一个日期对象:
java.util.Date date1 = new java.util.Date( );
访问限定符

  1. 默认访问限定
  2. public访问限定 公共的
    3.private(私有的)访问限定
    4.protected(保护的)访问限定 保护的就是自己在其他类中不能被直接调用。 可以被继承但是不能被直接调用
    2、抽象类
    访问限定符 abstract class 类名{
    属性
    方法:
    普通方法 访问限定符 返回值类型 名字(【参数】){}

抽象方法 访问限定符 abstract 返回值类型 名字(【参数】);
}
抽象类的特点:
1)所谓抽象方法,是指在类中仅仅声明了类的行为,并没有真正实现行为的代码。
2)抽象方法只能存在于抽象类中,正像刚才所言,一个类中只要有一个方法是抽象的,则这个类就是抽象的。类中只要有抽象方法,那么这个类必须被声明为抽象类
3)构造方法、静态(static)方法、最终(final)方法和私有(private)方法不能被声明为抽象的方法。构造方法不能是抽象的,抽象方法不能是私有的

4)一个抽象类中可以有一个或多个抽象方法,也可以没有抽象方法。
5)抽象类只能被继承(派生子类)而不能创建具体对象即不能被实例化。抽象类不能自己实例化自己
6)一个类如果继承了抽象类,那么就必须重写抽象中的所有抽象方法。重写抽象方法有具体的实现
Public abstract void getAll();抽象方法
Public void getAll(){};重写的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值