面向对象的特点主要可以概括为封装性、继承性和多态性。
面向对象提出了两个概念,即类和对象,在java程序中类和对象是最基本、最重要的单元。类表示某类群体的一些基本特征抽象,对象表示一个个具体的事物。
类的定义格式:
public class 类名 { //成员变量; //成员方法; }
注意:1、class是类名,需要小写。
2、类名要符合标识符的命名规则和命名规定。
3、类名尽量用有意义的英文单词(方便区分)。
那我们就用一个学生类来做一个示例:(其中包括姓名name和年龄age还有sex是成员变量,read()是成员方法)
public class student { String name;//定义String类型的变量name int age;//定义int类型的变量age String sex;//定义string类型的变量sex //定义read()方法 void read() { System.out.println("大家好,我是"+name+",我在看书!"); } }
在java中,定义在类中的变量称为成员变量,定义在方法中的变量称为局部变量。
package java; public class student { String name;//定义String类型的变量name int age=30;//定义int类型的变量age;类中的变量称为成员变量 String sex;//定义string类型的变量sex //定义read()方法 void read() { int age=50;//方法内部定义的变量称为局部变量 System.out.println("大家好,我今年"+age+"岁,我在看书!"); } public static void main(String[] args) { student s=new student(); s.read(); } }
用new关键字创建对象的具体格式:
类名 对象名称=null;
对象名称=new类名();
对象名称.属性名
对象名称.方法名
对象是类的实例,类是对象的模板;
类是抽象的,对象是具体的。
我们以两辆小汽车为例:
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处有:1.将变化隔离 2.便于使用 3.提高重用性 4.提高安全性
原则:1.将不需要对外提供的内容都隐藏起来 2.把属性都隐藏,提供公共方法对其访问。
我们可以用private将age变量隐藏起来
将年龄age私有化以后,在这个类以外(PersonTest类)即使建立了对象也不能直接访问。但是人应该有年龄,就需要在Person类中提供age对应的访问方式,创建一个方法。Java中一般对于私有的属性都会以“get/set”为前缀定义方法名,对其进行访问。
构造方法
package com.sdbi.ljh; class Person { private String name;// 定义String类型的变量name private int age; // 定义int类型的变量age Person() {} Person(String n) { name = n; } Person(String n, int a) { name= n; age = a; }// 定义speak() 方法 void speak() { System.out.println("大家好,我是" + name + ",我今年" + age + "岁!"); } } class PersonTest { public static void main(String[] args) { Person p1 = new Person(); p1.speak(); Person p2 = new Person("张三"); p2.speak(); Person p3 = new Person("李四", 18); p3.speak();} }
this关键字的作用:
1、使用this关键字调用本类中的属性,调用成员方法,调用本类的方法。
需要注意:
只能在构造方法中使用this调用其他构造方法,不能在成员方法中通过this调用其他构造方法;
在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次;
不能在一个类的两个构造方法中使用this互相调用。
java的四种访问控制权限:public、protected、default、private
(1) private: 属于私有访问权限,用于修饰类的属性和方法。
(2) default: 属于默认访问权限。如果一个类中的属性或方法没有任何的访问权限声明,则该属性或方法就是默认的访问权限。
(3)protected:属于受保护的访问权限。一个类中的成员使用了protected 访问权限,则只能被本包及不同包的子类访问。
(4) public: 属于公共访问权限。如果 个类中的成员使用了 pubie 访问权限,则该成员可以在所有类中被访问,不管是否在同一包中。