面向对象

  1. 类和对象的关系解析
    类是对具有共同特性的事务的一个抽象描述,是在概念上的一个定义。类是不存在的 虚拟的一个概念。
    类是所有对象具有的共同特征。

对象到类是抽象
类到对象是实例化

观察在现实中寻找对象,寻找了N个对象后,发现这些对象都有共同特征。
然后在脑中形成一个模板[类]
程序员可以通过面向对象的编程语言来表述一个类, 程序中就有了类的定义。
可以通过类来创建对象。

对象A,B,C 具有共同特征 在我们脑海中进行抽象转变就形成了一个类【模板】
现实中眼睛观察的都是对象, 对象与对象之间有共同特征,这个共同的特征概念,被我们称为类。
观察对象是怎么运作的, 然后在脑海中形成一个模板。
有了类之后我们可以创建新的对象 就是实例化对象。

一个类主要描述的是 状态 + 动作
列如一个学生类,
状态信息:名字,身高,性别,学号。
动作信息: 吃,睡觉,学习,运动。

状态和动作具体到对象时,最终的结果可能会不一样。
对象和对象之间有共同特征,但具体到对象	之后有数据的差异。	
 假如去调用身高这个特征访问时,必须先创建对象,通过对象去访问这个特征,
这个特征在某个对象上,值不同。 有的对象1.7米 有的1.9M
  类{
属性;//描述对象的状态信息
方法;//描述对象的动作信息
}
  1. 如何创建类,如何创建对象,如何调用属性和方法
    假如我们现在要创建一个学生类。 我们要找到所有学生的共同特征,去形成一个模板

    public class Student{ //这就是一个学生类

    //学生共有的属性
    public String name; //姓名
    public int id; //学号
    public int age; //年龄

    //学生共同的方法[动作]
    public void Learn(){
    System.out.println(“我正在学习”);
    }

    public void Play(){
    System.out.println(name+“在玩游戏,英雄联盟”);
    }

    public static void main(String[] args){
    Student s1=new Student(); //现在已经创建一个名叫s1的对象[学生]
    s1.name=“张三”; //将张三赋值给s1这个学生对象
    s1.Play(); // s1执行了玩游戏这个方法

    }

}

  1. 构造方法和一般方法的区别
    1.构造方法的名字必须和类名完全相同,没有返回类型,连void也没有。
    2.只有构造方法才能new,用于生成实例对象.
    3.普通方法不能new,可以通过对象名去调用.

  2. 方法重载和重写
    重载和重写的区别:
    重载是方法名称相同,参数类型和个数不同或顺序不同。 重载是发生在一个类中。
    重写是方法名称、参数类型、返回值全部相同。 重写是发生在子类继承父类方法进行重写。

    重载:方法的重载是让类用统一的方式处理不同数据类型的一种手段。
    在一个类中,多个方法名相同,但是参数列表不同。[可以是参数个数,参数类型,和参数顺序不同]
    调用方法时传递给他们不同的个数和类型的参数来决定具体使用哪个方法。

    重写:在面向对象中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类的所有特征,继承了父类所有的方法和变量。
    子类可以定义新的特征,当子类需要修改父类一些方法进行扩展,增大功能,这种操作被称为重写,也叫覆盖。
    父类的方法参数列表、返回类型必须完全与被子类重写的参数列表、返回类型完全相同。访问限定符不能缩小
    比如如果父类访问限定符是public而到子类为private,那么程序运行就会报错。

  3. 面向对象的三大特征:

  • 封装
  • 继承
  • 多态

封装:

我们定义个用户类
public User{
public int age;//定义一个年龄属性
}

在另外一个主函数窗口运行
public static void main(String[] args){
User s1=new User; //我们创建一个s1对象
s1.age=200; //我们设置s1的年龄为200,这时运行他 ,200是不合法的年龄,但是程序不会报错。
//可以无限制的修改这个年龄属性, 没有安全可言。 这时我们就可以用到封装;

}

封装有什么好处,为什么要进行封装;
* 可以让属性更加的安全。
* “独立体”

封装的步骤:
1、所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。
2、对外提供简单的操作入口,就是以后外部程序想要访问此数据,只能通过这些简单的入口进行操作。
一个属性通常访问的时候就两种访问形式。
- 对外提供俩个公开的方法,分别是set方法和get方法
-想要修改age属性,调用set方法。
-想要读取age属性,调用get方法。

我们重新定义用户类
public class User{
private int age; //设置属性为私有化,外部调用不了这个age属性,太过安全,我们提供一个入口让外部进行操作;
public void setAge(int a){
//之前我们看到年龄可以随意更改,我们使用封装可以限制age属性
if(a < 0 || a > 130){
System.out.println(“对不起,您提供的年龄不合法”); //如果给的age属性是负数并且大于150,则程序报错。
return;
}
age = a;
}
public int getAge(){
return age;
}

 }

//我们再调用这个User
public static void main(String[] args){
User s1=new User; //创建一个对象
// s1.setAge(-10); 如果我们定义他为负数 则会出错
s1.setAge(10) //我们现在只能把他赋为0-130岁之间

 System.out.println(s1.getAge);

}
这样我们保证了age这个属性的安全性,不像之前 age属性可以被随意更改值。


继承:
1、继承的基本作用是:代码重复使用,但是类最重要的作用是:有了继承才有以后的“方法覆盖”和“多态机制”。
2、继承语法格式:
[访问修饰符] class 类名 extends 父类名{

		}

3、java语言中只支持单继承【只能继承一个类】,不支持多继承。
4、继承的一些术语:
	B类继承A类:
	A类被称为:父类、基类、超类
	B类被称为:子类、派生类
5、子类不能继承父类的哪些数据呢:
	-私有的不支持继承
	-构造方法不支持继承

6、java中定义的类如果没有去继承其他类,那么这些类都有一个父类:java.lang.Object。

多态:

多态性是对象多种表现形式的体现。
比如我们说“学生这个概念” 它就有很多不同的表达,比如小学生,初中生,高中生,大学生等等。
当我说你看前面那个学生, 那个“学生”他可能是小学生,高中生,大学生等等。这个学生对象就具有多态性。

public interface College{}
public class PrimarySchool{}
public class Student extends PrimarySchool implements College{}

因为Student 具有多重继承,所以他具有多态性
一个Student 是一个PrimarySchool ,也是一个College 还是一个 Student
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值