1.面向对象
Java是面向对象的程序设计语言,除了8中简单类型外,都属于对象
面向对象的语言会有明显的三个特征:封装、继承、多态
注意:Java其实不算完全面向对象,因为有8种简单类型的存在
2.面向对象的语言有哪些
java 、ython、c++
3.面向对象(OO)的优点
1)与人类的思维习惯一致(观察事物得出结论,用程序的形式写出)
2)信息隐藏,提高了程序的可维护性和安全性(封装)
3)提高了程序的可重用性(多态和继承)
4.什么是类?什么是对象?
猫科动物属于一个类,狮子老虎属于对象。
类就是逻辑概念当中,现实当中内存当中并不存在的;对象是会占内存,实实在在用到的东西
类相当于生产汽车的一张图纸,对象相当于根据图纸生产出来的车
类和对象是一对多;对象只属于一个类。
5.类的概念
1.类是对一群具有相同属性、表现相同行为的对象的抽象
2.类确定对象将会拥有的属性和行为,它定义了一种对象所拥有的数据和所能完成的操作。
3.在面向对象程序设计中,类是程序的基本单元。程序中的对象是类的实例 。对象是通过类创建的
车的文字描述
静态特征:车名、车身颜色等
动态特征:能前进、能倒退
对车这个类型的静态特征描述为类里的属性,对车类的动作描述,是类里的方法。
类有两个基本元素:属性和方法
6.定义类(定义一个类的步骤)
定义类名、编写类的属性、编写类的方法
7.类的创建
成员变量描述静态特征,放置在类块中的任何位置,通常书写在类的开始处。
成员方法描述动态特征,放置在类块中的任何位置,通常书写在成员变量之后
public class Car {
/*
* 1-属性field
* 2-访问控制符(public)
* 3-类型(String) 名字 首字母小写 myFirstDog
*
*/
public String color;
public String name;
/*2-方法 method
*public void method(){
*}
**/
public void forward(){
System.out.println("前进"+color);
}
public void backward(){
System.out.println("后退"+name);
}
}
8.对象的创建?
public class CarTest {
public static void main(String[] args) {
// 1-new 一个对象 类 对象
Car aodi=new Car();
// 属性和方法 filed method
aodi.color="green"; //属性赋值
aodi.name="A60";
//method
aodi.forward(); //方法调用
aodi.backward();
//打印属性
System.out.println(aodi.color);
System.out.println(aodi.name);
}
}
练习:创建和使用对象
编写学员类,输出学员相关信息
编写教员类,输出教员相关信息
public class Student {
//学生实体类
public String name;
public int age;
public String clazz;
public String hobby;
//显示学员信息
public void info(){
System.out.println("姓名"+name+"年龄"+age+"班级"+clazz+"爱好"+hobby);
}
}
public class Teacher {
//教师实体类
public String name;
public String course;
public String major;
public int teachingAges;
public void info() {
//显示教员信息
System.out.println("姓名"+name+"课程"+course+"主修"+major+"教龄"+teachingAges);
}
}
public class Test {
测试类
public static void main(String[] args) {
Student xiaoming=new Student();
xiaoming.name="小米";
xiaoming.age=25;
xiaoming.clazz="3年2班";
xiaoming.hobby="LOL";
Teacher xiaohon=new Teacher();
xiaohon.name="小红";
xiaohon.course="java";
xiaohon.major="软工";
xiaohon.teachingAges=10;
xiaoming.info();
xiaohon.info();
}
}
9.对象的概念?
根据图纸生产出来的车。
类是对事物属性行为的概括描述,对象就是符合类描述的具体事物。
所以一个对象必须属于某个类,一个类可以有多个具体对象。
10.对象的创建
用关键字new来创建对象。new的作用是为对象新开辟一片内存空间
对象的销毁
(Java垃圾收集机制)当对象不存在引用时,它就会被java自动销毁。
11.对象的内存分析(栈内存、堆内存)
new一个对象会在堆内存申请一个空间,堆内存的房间号存在栈内存中,栈内存存放的是并不是对象而是对象所在堆内存的房间的地址。
堆内存放的是真是对象的实体,栈内存放的是堆内存的地址
例:int a=10;开劈a的空间
int b=a; 开劈b的空间
b=100; b的值改变,a的值不变
例2:
Student s1=new Student(); 申请空间
S1.name=”1”; 对象名字为1
Student s2=s1; s2在栈内存中申请了空间,把s1的堆内存的地址放了进去
S2=name=”2”;
S1.name? S2.name? 放着的是同一把钥匙
打印俩个2
12.引用类型变量
引用赋值
例如:我们有Student类
Student s = new Student();
Student s2 = s; //引用赋值
同一类型的俩个引用变量指向了同一个对象
练习:定义管理员类、定义客户类
定义管理员类
训练要点
n类的属性:名字,密码
n定义类的方法:show() 显示信息
n需求说明
n编写管理员类
n实现思路
1. 定义管理员类Administrator
2. 定义其属性和方法
public class Administrator {
//定义一个类
//类的属性
public String name;
public String password;
//2-方法 method
public void show(){
System.out.println("管理员"+name+"密码"+password);
}
}
定义客户类
需求说明
n 编写客户类
n属性:积分、卡类型
n方法show():显示客户信息(显示积分、卡类型)
定义客户类Customer
定义属性和方法
public class Customer {
//类
public int points;
public String type;
public void show() {
System.out.println("显示积分"+points+"卡类型"+type);
}
}
创建管理员对象
训练要点
n使用类创建对象
n引用对象的属性和方法
n需求说明
n创建两个管理员类对象,输出他们的相关信息
n实现思路
1、创建两个管理员类的对象
2、给两个对象赋值并调用
显示方法
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//编写管理员对象
Administrator admin1=new Administrator();
admin1.name="admin";
admin1.password="123456";
Administrator admin2=new Administrator();
admin2.name="admin1";
admin2.password="123456";
admin1.show();
boolean isTrue=true;
}
}
更改管理员密码
训练要点
n使用类创建对象
nwhile循环
n需求说明
n输入旧的用户名和密码,如果正确,方有权限更新
n从键盘获取新的密码,进行更新
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//编写管理员对象
Administrator admin1=new Administrator();
admin1.name="admin";
admin1.password="123456";
Administrator admin2=new Administrator();
admin2.name="admin1";
admin2.password="123456";
admin1.show();
boolean isTrue=true;
while (isTrue) {
Scanner input=new Scanner(System.in);
System.out.println("请输入管理员账号");
String uname=input.next();
System.out.println("请输入管理员密码");
String pwd=input.next();
if (uname.equals(admin1.name)&&pwd.equals(admin1.password)) {
System.out.println("新密码");
String newPwd=input.next();
admin1.password=newPwd;
System.out.println("修改密码成功");
isTrue=false;
}else{
System.out.println("用户名或密码不对,重新输入");
// isTrue=true;
}
}
}
}
客户积分回馈
需求说明
n实现积分回馈功能
n金卡客户积分大于1000分或普卡客户积分大于5000,获得回馈积分500分
n创建客户对象输出他得到的回馈积分
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Customer c=new Customer();
System.out.println("请输入卡的类型");
c.type=input.next();
System.out.println("请输入积分");
c.points=input.nextInt();
if ((c.equals("金卡")&&c.points>1000)||(c.type.equals("普卡")&&c.points>5000)) {
System.out.println("获得500积分");
}else{
System.out.println("对不起,您的条件不足");
}
}
}
练习:创建和使用对象
一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出
public class Test3_youren {
public String name;
public int age;
public void info(){
System.out.println("姓名"+name+"年龄"+age);
}
}
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Scanner onput=new Scanner(System.in);
Test3_youren c=new Test3_youren();
Test3_menpiao d=new Test3_menpiao();
System.out.println("请输入姓名");
c.name=input.next();
System.out.println("请输入年龄");
c.age=input.nextInt();
if(c.age<18){
c.info();
System.out.println("门票免费");
}else{
c.info();
System.out.println("支付20元门票");
}
}
}