java中的面向对象基础
程序员文章站
2022-03-10 18:44:14
...
java中的面向对象基础
1、对象
#一切客观存在的事物都是对象,万物皆对象。
#任何对象,一定具有自己的特征和行为。
2、类
(1)类的定义
(2)对象的创建
(3) 类与对象的关系
类:定义了对象应具有的特征和行为,类是对象的模板。
对象:拥有多个特征和行为的实体,对象是类的实例。
代码示例:
public class TestOOP {
public static void main(String[] args) {
// 1. 创建Dog类型的对象,并保存在dog变量当中
Dog dog = new Dog();
// 2.访问属性:为各个属性赋值
dog.breed = "萨摩";
dog.age = 3;
dog.sex = "公";
dog.furColor = "白色";
// 3.访问属性:从各个属性中取值
System.out.println(dog.breed + " " + dog.age + " " + dog.sex + " " + dog.furColor);
// 4.调用对象的方法
dog.eat();
dog.sleep();
}
}
class Dog {
// 在现实中的一组相同或类似的对象中,提取共性的特征和行为,保存在程序中的模板里(类)
// 属性-实例变量
String breed; // 品种
int age; // 年龄
String sex; // 性别
String furColor;// 毛色
// 方法-实例方法eat()
public void eat() {
System.out.println("爱蹦...");
}
// 方法-实例方法sleep()
public void sleep() {
System.out.println("爱跳...");
}
}
3、构造方法
构造方法:是类中的特殊方法,主要用于创建对象。
特点:
- 名称与类名完全相同。
- 没有返回值类型。
- 创建对象时,触发构造方法的调用,不可通过句点手动调用。
构造方法又分为无参构造方法和有参构造方法:
无参构造方法:
默认存在,但是一旦添加了有参构造方法,便会覆盖无参构造方法,需要使用的时候,必须手动添加
格式:访问修饰符 类名(){ }
有参构造方法:
需要手动添加,可以存在1个或者多个参数的有参构造方法
格式:访问修饰符 类名(参数类型1 参数名1,参数类型2 参数名2,…){ }
在得知对象中的属性,直接通过有参构造方法创建对象,会比无参构造方法方便
有参构造方法 = 无参构造方法 + 一个或者多个set( )
无参构造方法:
public class Demo01 {
String name;
int age;
String sex;
//无参构造方法创不创建都没关系,因为它是默认存在的
public Demo01(){
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
}
public class Demo02 {
public static void main(String[] args) {
//创建对象的时候单独赋值
Demo01 demo01 = new Demo01();
demo01.setName("小明");
demo01.setAge(18);
demo01.setSex("男");
}
}
有参构造方法:
public class Demo01 {
String name;
int age;
String sex;
//创建了有参构造方法就不用写setName、setAge、setSex这3个方法了
public Demo01(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
}
public class Demo02 {
public static void main(String[] args) {
//创建对象的时候直接赋值
Demo01 demo01 = new Demo01("小明",18,"男");
}
}
4、this关键字
this关键字的两种用法:
(1)第一种用法:调用实例属性、实例方法。如:this.name、this.sayHi()。
public class Demo {
public static void main(String[] args) {
Student stu = new Student();
stu.sayHi();
}
}
class Student{
String name = "小明";
public void sayHi() {
//当实例变量和局部变量重名时,优先访问局部变量;
//此时,如需访问实例变量,需要增加this.前缀;
//不存在重名时,则可省略this。
String name = "小陈";
System.out.println(name);
System.out.println(this.name);
}
}
//运行结果:
// 小陈
// 小明
(2)第二种用法:调用本类中的其他构造方法。如:this()、this(实参)。
class Student{
String name;
int age;
String sex;
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public Student(String name,int age,String sex) {
//在构造方法中,调用本类的其他构造方法,即可复用构造方法中的逻辑代码;
//三参构造将接收到的实参直接传递给三参构造进行属性赋值。
this(name,age);
this.sex = sex;
}
}
- this():调用无参构造
- this(实参):调用有参构造
- 注:必须在构造方法的首行
上一篇: php反序列化漏洞