面向对象语言的三大特征:封装 , 继承 ,多态
* 今日的知识点:
* 1.类和对象的概念
* 2.属性的可见度
* 3.setters 和 getters方法
* 4.构造方法(带参,无参)
* 5.toString 方法,重写对象的输出方式
* 6.方法的重载(方法名一致,参数不一致)
* 7.this关键字 指代当前调方法的对像
* 8.static关键字 修饰属性和方法。由类名直接调用!
1.类和对象的概念
类:具体相同特征和行为的事物的抽象
对象:万事万物皆对象
类是对象的类型
对象是类的实例
public class Person {
//特征->属性(特性)
// 默认protected,本包使用
public String name;
String sex;
int age;
String phoneNumber;
String[] hobbys;
//行为->方法(函数)
public void run(){
System.out.println("奔跑吧!!!");
}
2.属性的可见度
package com.a;
public class Girl {
//属性的可见度
/*
* public 公开的,任何包中任何类中都可以访问到此属性!不符合封装特性
* protected 受保护的,本类及其子类和同包中可以访问
* private 私有的,进本类可以访问!(常用此类)
*/
public String name;
protected int age;
private String phoneNumber;
//属性私有化在外界无法访问
//需要借用setter 和 getter方法
public void setPhoneNumber(String phone){
//注意 此时的phone的是形参
phoneNumber = phone;
}
//取值方法
public String getPhoneNumber(){
return phoneNumber;
}
}
alt+shift+s 快捷方式填充函数
3.setters 和 getters方法
点击:填充getter setter
//alt+shift+s 填充getter setter
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
4.构造方法(带参,无参)
点击:生成有参函数和有参函数
public Student(String name, int num, String sex, int age){
this.name = name;
this.num = num;
this.sex = sex;
this.age = age;
}
public Student(){
name = "飞飞";
sex = "boy ";
age = 18;
num = 1;
}
5.toString 方法,重写对象的输出方式
public void setName(String name){
//this 指代当前调用本方法的对象
//this.name 可以理解为 对象.name
this.name = name;
}
点击 :生成 toString 可产生以下代码,在Main中可用System.out.println(stu2);直接输出
@Override
//重写对象的输出方式 默认输出的是对象在内存中的地址
//System.out.println(stu2);直接输出
public String toString(){
return this.num + " " + name + " " + sex + " " + age;
}
6.方法的重载(方法名一致,参数不一致)
public class Cat {
//方法的重载!!!!
//方法名一致!但参数不同!
public void run(){
System.out.println("白鼠小偷!");
}
public void run(String name){
System.out.println(name + ":喝酒吗?搓一顿");
}
public void run(String name, int count){
System.out.println(name + ":不胜酒力,来" + count +"瓶白酒!!");
}
}
7.this关键字 指代当前调方法的对像
public void setName(String name){
//this 指代当前调用本方法的对象
//this.name 可以理解为 对象.name
this.name = name;
}
8.static关键字 修饰属性和方法。由类名直接调用!
public class Mouse {
//static 静态关键词
//static 修饰的属性和方法 由类名直接调用
private String name;//对象级属性 ,由对象调用
private static String color;//类级属性,由类名直接调用!
//方法
//由对象调用
public void eat(){
System.out.println(this);
System.out.println("小老鼠,偷吃糖!");
}
//由类名直接调用
public static void run(){
//System.out.println(this);
//在静态方法中不可以使用this
//因为本方法由类名直接调用,会跳过对象!
System.out.println("别跑!");
}
}
在主函数调用的情况,在对static 定义的方法,可以在主函数中直接使用,不用再创建对象
package com.e;
public class Main {
public static void main(String[] args) {
//static
Mouse.run();
Mouse mouse = new Mouse();
mouse.setName("舒克");
Mouse.setColor("灰色");
mouse.eat();
}