java面向对象基础
类和对象
类:
· 类是对现实生活中一类具有共同属性和行为的抽象
· 类是对象的属性,是具有相同属性和行为的一组对象的集合
· 类是现实事物的一种描述
· 类由属性和行为组成
对象:
· 具有属性和行为的真实存在的事物。
总结: 类是对事物的描述, 对象是具体的事物。
类的定义格式
在java中的类也具有属性和行为。
属性: 成员变量, 类中的方法外定义的变量
方法: 成员方法,类里面的方法, 不带static 关键字
/*
定义一个学生类, 属性有姓名和年龄。 行为: 学习
*/
public class Student {
// 成员变量, 也就是类的属性
int age;
String name;
// 成员方法, 也就是类的行为
public void study() {
System.out.println("学习");
}
}
对象
对象根据类来创建,是具体的对象, 格式为 类名 变量名 = new 类名
/*
使用Student类创建一个学生对象,姓名为 hjw 年龄18
*/
public class StudentTest() {
public static void main(String[] args) {
Student s1 = new Student();
// 为s1对象增加姓名和年龄, 使用学习方法
s1.name = "hjw";
s1.age = 18;
s1.study(); // "学习"
}
}
private关键字和this
private是一个修饰符。 类中的成员变量使用了private修饰,实例对象就不能直接点语法访问这个成员变量。
若要访问private修饰的变量,需要定义对应的get set方法。
this关键字, 代表对象的实例, 哪个对象调用方法, this就指向哪个对象。
// 定义一个教师类
class Techer() {
private int age;
private String name;
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
// 使用教师类
public class TecherDemo() {
public static void main(String[] args) {
Techer t1 = new Techer();
//t1.name = "李老师"; //报错 private修饰无法访问
t1.setName("李老师");
ti.setAge(20);
System.out.println(t1.getName());
System.out.println(t2.getAge());
}
}
构造方法
对象在创建时默认调用的方法, 也就是 new 对象 的时候调用的方法。系统默认实现了一个构造方法,什么事情也没有做。
我们也可以自己创建构造方法 ,方法名与类名相同就是构造方法。使用构造方法接收参数可以在 new 的时候为成员变量赋值。
如果自定义了带参数的构造方法, 也要写一个重构的无参构造方法, 推荐用法, 不管是否使用构造方法, 定义类时都自己实现。
构造方法不需要待static 和 返回类型
// 定义一个人的类。 使用private关键字 与构造方法。
class Person {
private String name;
private int age;
// 无参构造方法
public Person() {}
// 带参构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
}
public class PersonDemo() {
public static void main(String[] args) {
Person p1 = new Person();
p1.setName = "hjw";
p1.setAge = "88";
Person p2 = new Person("小明", 18);
}
}