目录:
package com.itheima.anonymous;
/*
匿名对象 :
没有对象名接收的对象 , 称作为匿名对象
有对象名接收的对象 , 称作有名对象
注意 : 一般使用一次的对象 , 我们可以采用匿名对象
匿名对象的使用 :
1 使用匿名对象直接调用方法
2 使用匿名对象作为方法的传参
3 使用匿名对象作为方法的返回值
*/
public class Demo1 {
public static void main(String[] args) {
// Student s = new Student();
// s.study();
// 1 使用匿名对象直接调用方法
new Student().study();
// Student s2 = new Student();
// useStudent(s2);
// 2 使用匿名对象作为方法的传参
useStudent(new Student());
}
public static void useStudent(Student s) {
s.study();
}
public static Student getStudent() {
// Student s = new Student();
// return s;
// 3 使用匿名对象作为方法的返回值
return new Student();
}
}
class Student {
public void study() {
System.out.println("学生学习...");
}
}
package com.itheima.anonymous;
import java.util.ArrayList;
import java.util.Scanner;
/*
需求 :
1 创建用户(User)对象 , 对象数据采用键盘录入而来
2 用户(User)包含的属性 :
用户名 (username)
手机号码 (phonNumber)
登录密码 (password)
确认密码 (confirm)
电子邮箱 (email)
性别 (sex)
出生日期 (birthday)
3 如果登录密码和确认密码不一致 , 重新输入
4 把用户(User)对象 ,添加到ArrayList集合中 , 打印集合对象即可
*/
public class Demo2 {
public static void main(String[] args) {
// 创建集合对象
ArrayList list = new ArrayList<>();
// 创建键盘录入对象 , 录入用户的数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入手机号码:");
String phoneNumber = sc.nextLine();
System.out.println("请输入登录密码:");
String password = sc.nextLine();
System.out.println("请输入确认密码:");
// 如果登录密码 , 和确认密码不一致 , 需要重新输入确认密码
String confirm;
while (true) {
confirm = sc.nextLine();
if (password.equals(confirm)) {
break;
} else {
System.out.println("您输入的登录密码和确认密码不一致, 请重新输入...");
}
}
System.out.println("请输入电子邮箱:");
String email = sc.nextLine();
System.out.println("请输入性别:");
String sex = sc.nextLine();
System.out.println("请输入出生日期:");
String birthday = sc.nextLine();
// 把用户对象添加到集合中
list.add(new User(username, phoneNumber, password, confirm, email, sex, birthday));
// 遍历集合
for (int i = 0; i < list.size(); i++) {
// 获取集合中的用户对象
User u = list.get(i);
System.out.println(u.getUsername() + "---" + u.getPhonNumber() + "---" + u.getPassword()
+ "---" + u.getConfirm() + "---" + u.getEmail() + "---" + u.getSex() + "---" + u.getBirthday() );
}
}
}
package com.itheima.anonymous;
// 用户类
public class User {
private String username;
private String phoneNumber;
private String password;
private String confirm;
private String email;
private String sex;
private String birthday;
public User() {
}
public User(String username, String phonNumber, String password, String confirm, String email, String sex, String birthday) {
this.username = username;
this.phoneNumber = phonNumber;
this.password = password;
this.confirm = confirm;
this.email = email;
this.sex = sex;
this.birthday = birthday;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPhonNumber() {
return phoneNumber;
}
public void setPhonNumber(String phonNumber) {
this.phoneNumber = phonNumber;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getConfirm() {
return confirm;
}
public void setConfirm(String confirm) {
this.confirm = confirm;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
package com.itheima.extends_demo;
/*
学生类 : 姓名(name) , 课程名称(course) , 所在班级(className) , 查看课表(lookForm) , 填写反馈数据(write)
老师类 : 姓名(name) , 课程名称(course) , 部门名称(department) , 查看课表(lookForm) , 发布试题(release)
设计 : 把学生类 和 老师类的共性内容抽取到一个单独的类中(Person),存储共性内容
父类 : 姓名(name) , 课程名称(course) , 查看课表(lookForm)
*/
public class ExtendsDemo1 {
public static void main(String[] args) {
Student s = new Student();
s.setName("张三");
s.setCourse("Java");
s.setClassName("三年二班");
s.lookForm();
s.write();
}
}
package com.itheima.extends_demo;
/*
此类定义的是子类的共性成员
*/
public class Person {
private String name;
private String course;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public void lookForm(){
System.out.println("查看课表");
}
}
package com.itheima.extends_demo;
/*
子类只需要定义自己特有的成员 , 共性的成员需要抽取到父类中
*/
public class Student extends Person{
private String className;
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public void write(){
System.out.println("填写反馈数据");
}
}
package com.itheima.extends_demo;
/*
子类只需要定义自己特有的成员 , 共性的成员需要抽取到父类中
*/
public class Teacher extends Person {
private String department;
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public void release() {
System.out.println("发布试题....");
}
}
/*
注意事项
1 抽象方法和抽象类必须用关键字 abstract
2 抽象类中可以有抽象方法 , 也可由非抽象方法
但是抽象方法必须存在抽象类中
非抽象方法 : 让子类去继承 , 提高代码的复用性
抽象方法 : 让子类必须完成某些功能(规范)
3 抽象类不能进行实例化(不能创建对象)
4 抽象的子类
要么重写所有的抽象方法
要么这个子类是一个抽象类
抽象类虽然不能创建对象 , 但是存在构造方法
构造方法存在的意义 : 让子类去通过super访问 , 从而给抽象类中的私有变量赋值
*/
public class AnimalTest {
public static void main(String[] args) {
// 抽象类不能进行实例化(不能创建对象)
// Animal a = new Animal();
}
}
// 抽象类案例
public abstract class Animal {
private String breed;
private String color;
public Animal() {
}
public Animal(String breed, String color) {
this.breed = breed;
this.color = color;
}
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
// 抽象方法
public abstract void eat();
public void drink(){
System.out.println("喝水....");
}
}
public class Dog extends Animal{
public Dog(){
}
public Dog(String breed , String color){// breed = "边牧" ,color = "黑白"
super(breed , color);
}
@Override
public void eat() {
System.out.println("狗吃骨头!");
}
}
/*
需求:
定义猫类(Cat)和狗类(Dog)
猫类成员方法:eat(猫吃鱼)drink(喝水…)
狗类成员方法:eat(狗吃肉)drink(喝水…)
向上抽取父类 :
Animal类 : 品种 , 颜色 , eat(); , drink(){喝水…}
*/
public class AnimalTest {
public static void main(String[] args) {
// 空参构造 + set
// Dog d1 = new Dog();
// d1.setBreed("哈士奇");
// d1.setColor("黑白相间");
// System.out.println(d1.getBreed() + "---" + d1.getColor());
// d1.drink();
// d1.eat();
// 全参构造
Dog d2 = new Dog("边牧" , "黑白");
System.out.println(d2.getBreed() + "---" + d2.getColor());
}
}
public abstract class Template {
public void write() {
System.out.println("<<我的爸爸>>");
// 正文
body();
System.out.println("啊~这就是我的爸爸.");
}
public abstract void body();
}
public class Tom extends Template {
@Override
public void body() {
System.out.println("那是一个秋天 , 风儿那么缠绵 ,记忆中,那天爸爸骑车送我放学回家 , " +
"我的脚卡在了自行车链中 , 爸爸蹬不动, 他就站起来蹬!"
);
}
}
public class Test {
public static void main(String[] args) {
Tom tom = new Tom();
tom.write();
}
}