6、7-java学习- 面向对象-案例代码
1.定义“人”类
public class Person {
//成员变量:定义在类中
String name = "张三";
int age = 20;
char sex = '男';
//成员方法,你以前怎么 写方法,现在也怎么写,这次你可以把static
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
}
public class MyTest {
public static void main(String[] args) {
Person person = new Person();
//使用对象去调用类中属性
String mz = person.name;
int nl = person.age;
char sex = person.sex;
System.out.println(mz);
System.out.println(nl);
System.out.println(sex);
//采用对象去调用类中的功能
person.sleep();
person.eat();
System.out.println("===========================");
//可以创建该类的很多对象
Person p2 = new Person();
p2.name="李四";
p2.age=60;
p2.sex='女';
System.out.println(p2.name);
System.out.println(p2.age);
System.out.println(p2.sex);
p2.sleep();
p2.eat();
}
}
2.定义手机类
public class Phone {
//定义一个Phone类
String pingpai="小米";
double price=2999;
public void call(String name){
System.out.println("给"+name+"打电话");
}
public void sendmsg(String name,String content){
System.out.println("给" + name + "发短信:"+content);
}
}
public class MyTest {
public static void main(String[] args) {
Phone phone = new Phone();
phone.pingpai="华为";
phone.price=4000;
System.out.println(phone.pingpai);
System.out.println(phone.price);
phone.call("北冥有鱼");
phone.sendmsg("其名为鲲");
Phone p2 = new Phone();
p2.pingpai="魅族";
p2.price=3000;
String pingpai = p2.pingpai;
double price = p2.price;
System.out.println(pingpai);
System.out.println(price);
p2.call("12345678");
p2.sendmsg("23456789");
}
}
3.定义学生类
public class Student {
//成员变量
String name="张三";
int age;
//成员功能
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
public class MyTest {
public static void main(String[] args) {
//类,一类事物封装,封装了属性功能 类Java是Java中的最小单位
Student student = new Student();
System.out.println(student);
String name = student.name;
int age = student.age;
System.out.println(name);
System.out.println(age);
student.eat();
student.sleep();
System.out.println("==============================");
Student student1 = new Student();
System.out.println(student1);
student1.name="李四";
student1.age=24;
System.out.println(student1.name);
System.out.println(student1.age);
student1.sleep();
student1.eat();
}
}
4.定义狗类
public class MyTest {
public static void main(String[] args) {
Dog dog = new Dog();
dog.show(20,50);
}
}
class Dog{
int num=100;
public void show(int a,int b){
//变量的访问原则:遵循就近原则,当局部变量和成员变量的名称相同了,访问时,遵循就近原则,先在局部范围找找到就使用
//如果局部没有找到,就去成员范围找,找到就使用
int num=2000;
System.out.println(a);//20
System.out.println(b);//50
System.out.println(num);//100
}
}
5.定义猫类
public class MyTest2 {
public static void main(String[] args) {
//以后看到一个方法的形参要一个类 类型,就传一个该类的对象
Cat cat = new Cat();
cat.num=250;
int a = 150;
cat.show(a);
System.out.println(a);
Cat cat1 = new Cat();
test(cat1,a);
System.out.println("cat中的属性num:"+cat.num);
System.out.println(cat1.num);
}
public static void test(Cat aa,int num){
aa.num=num;
}
}
class Cat{
int num=100;
public void show(int a){
a+=200;
System.out.println("a:"+a);
}
}
6. private 是一个权限修饰符,私有的,可以修饰成员变量,成员方法,被修饰的成员,只能在本类中访问,外界无法直接访问
public class Student {
private String name;
private int age;
public void setAge(int nianling){
if(nianling>=0&&nianling<=100){
age = nianling;
}else{
System.out.println("年龄的数据不合理");
}
}
public int getAge(){
return age;
}
public void setName(String mz){
name=mz;
}
public String getName(){
return name;
}
public void show(){
System.out.println(age);
System.out.println(name);
}
}
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
//可以通过间接的方式去设置值
student.setName("张三");
student.setAge(20);
int age = student.getAge();
String name = student.getName();
System.out.println(name);
System.out.println(age);
}
}
7. set、get 方法
public class Person {
//私有化成员变量
private String name;
private int age;
//为了让外界能够设置或获取成员变量的值,还得提供公共的set get 方法
public void setName(String mz){
name=mz;
}
public String getName(){
return name;
}
public void setAge(int nl){
age=nl;
}
public int getAge(){
return age;
}
//私有化方法,外界无法调用到
private void show(){
System.out.println(name);
System.out.println(age);
}
}
public class MyTest {
public static void main(String[] args) {
Person person = new Person();
person.setName("王五");
person.setAge(20);
//获取和打印是两个概念
String name = person.getName();
int age = person.getAge();
System.out.println(name);
System.out.println(age);
}
}
8.匿名对象:就是没有名字对象
public class MyTest {
public static void main(String[] args) {
AA aa = new AA();
aa.show();
aa.show();
aa.show();
new AA().show();
new AA().show();
new AA().show();
//匿名对象:就是没有名字对象
new AA();
System.out.println(new AA().num);
//当看到一个方法的形参要一个 类 类型 就传一个该类的对象
test(aa);
System.out.println(aa.num);
//匿名对象作为参数可以传递
test(new AA());
System.out.println(aa.num);
}
public static void test(AA aaa){
aaa.num=200;
}
}
class AA {
int num=20;
public void show() {
System.out.println("show");
}
}
9. this :代表本类的一个引用,可以理解为本类的一个对象,那么哪个对象调用这个方法,这个方法中的this,就代表这个对象
public class Teacher {
private String name;
private int age;
public void setName(String name){
//当成员变量和局部变量重名了,用this就可以区分
System.out.println("this 代表调用这个方法的对象"+this);
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(Teacher teacher,int age){
System.out.println("this 代表调用这个方法的对象" + this);
this.age=age;
}
public int getAge(){
return this.age;
}
}
public class MyTest2 {
public static void main(String[] args) {
Teacher teacher = new Teacher();
System.out.println("调用对象:"+teacher);
teacher.setName("北冥有鱼");
teacher.setAge(teacher,20);
String name = teacher.getName();
int age = teacher.getAge();
System.out.println(name);
System.out.println(age);
System.out.println("===================");
Teacher teacher2 = new Teacher();
System.out.println("调用对象:" + teacher2);
teacher2.setName("北冥有鱼2");
teacher2.setAge(teacher2,22);
String name2 = teacher2.getName();
int age2 = teacher2.getAge();
System.out.println(name2);
System.out.println(age2);
}
}
10.方法重载:方法可以重名,形参类型和个数不同
public class Student {
public Student(){
System.out.println("空参构造执行了");
}
//方法重载
public Student(String name){
System.out.println("一个参数的构造方法执行了"+name);
}
public Student(String name,int age) {
System.out.println("两个参数的构造方法执行了"+name+"==="+age);
}
}
public class MyTest {
public static void main(String[] args) {
//借助空参构造创建对象
Student student = new Student();
//借助有参构造来创建对象
Student student1 = new Student("abc");
Student student2 = new Student("aaa", 20);
}
}