-
package yeyu; public class Trafic { public int loadPerson; public void function(){ System.out.println("交通工具具有载人的功能"); } } package yeyu; public class Bus extends Trafic { public void function(){ System.out.println("公共汽车在陆上载客:"+loadPerson+"人"); } } package yeyu; public class Plane extends Trafic{ public String loadPerson; public void function(){ System.out.println("飞机在空中载客:"+loadPerson+"人"); } } package yeyu; public class Board extends Trafic { public void function(){ System.out.println("轮船在海上载客:"+loadPerson+"人"); } } package yeyu; public class TraficText { public static void main(String[] args) { // TODO Auto-generated method stub Trafic load1=new Bus(); Trafic load2=new Board(); Plane load3=new Plane(); load1.loadPerson=40; load2.loadPerson=200; load3.loadPerson="XXX"; load1.function(); load2.function(); load3.function(); } }
-
本节视频比较详细地介绍了UML的基本概念,POWER DESIGNER的使用方法。 UML简介: 1、Unified Modeling Language,统一建模语言/标准建模语言,是支持模型化和软件系统开发的图形化语言;是一个支持模型化和软件系统开发的图形化语言;为软件开发的所有阶段提供模型化的可视化支持 2、用例图:可视化表达系统如何满足业务规则和特定的用户需求; 3、序列图:表述计算机角色和相互关系,按照交互发生的顺序显示对象之间的交互; 4、类图/类别图:描述类之间的关系,类中的属性和方法; 5、UML类图、业务逻辑和所有支持结构一同被用于定义全部的代码结构;
-
car类 public abstract class Car { protected int type=0;//車的類型 1載貨 2 載客 3 載貨載客都有 protected int id=0;//車編號 protected String name="";//車名稱 protected int carryWeight=0;//車的載重量 5T 輕型 5T-20T重型 protected int carryPeople=0;//載客量 小客車5人以下 大客車10人以上 protected int rent=0;//租金 每天 public int getRent(){ return this.rent; } public String getName(){ return this.name; } public int getCarryPeople(){ return this.carryPeople; } public int getCarryWeight(){ return this.carryWeight; } public void setArg(int type,int id,String name,int carryWeight,int carryPeople,int rent){ this.type=type; this.id=id; this.name=name; this.carryWeight=carryWeight; this.carryPeople=carryPeople; this.rent=rent; } public abstract void show(); }
public class PeopleCar extends Car { public PeopleCar(int id,String name,int carryPeople,int rent){ setArg(2,id,name,0,carryPeople,rent); } public void show(){ System.out.println(this.id+". \t"+this.name+" \t"+this.rent+"元/天 \t"+ "載人:"+this.carryPeople+"人"); } }
public class WeightCar extends Car { public WeightCar(int id,String name,int carryWeight,int rent){ setArg(1,id,name,carryWeight,0,rent); } public void show(){ System.out.println(this.id+". \t"+this.name+" \t"+this.rent+"元/天 \t"+ "載貨:"+this.carryWeight+"頓"); } }
public class WorPopCar extends Car{ public WorPopCar(int id,String name,int carryWeight,int carryPeople,int rent){ setArg(3,id,name,carryWeight,carryPeople,rent); } public void show(){ System.out.println(this.id+". \t"+this.name+" \t"+this.rent+"元/天 \t"+ "載人:"+this.carryPeople+"人 載貨:"+this.carryWeight+"頓"); } }
import java.util.Scanner; public class Test { private static Car[] carArr; public static void main(String[] args) { carArr=new Car[6]; carArr[0]=new PeopleCar(1,"歐迪A4",4,500); carArr[1]=new PeopleCar(2,"馬自達6",4,400); carArr[2]=new WorPopCar(3,"皮卡雪6",2,4,450); carArr[3]=new PeopleCar(4,"金龍",20,800); carArr[4]=new WeightCar(5,"松花江",4,400); carArr[5]=new WeightCar(6,"依維柯",20,1000); initzuche(); } private static void initzuche(){ Scanner in = new Scanner(System.in); System.out.println("欢迎使用噠噠租车系统:"); System.out.println("您是否要租車:1是 0否"); int a = in.nextInt(); if(a==1){//進入租車系統 System.out.println("您可租車的類型及其價目表:"); System.out.println("序號 \t汽車名稱 \t租金 \t容量"); for (Car icar:carArr) { icar.show(); } System.out.println("請輸入您要租汽車的數量:"); int num = in.nextInt(); Car[] selectArr = new Car[num]; //統計一起做 String pop=""; int popnum=0; String wei=""; double weinum=0; int allprice=0; for(int i=1;i<=num;i++){ System.out.println("請輸入第"+i+"輛車的序號:"); int xh= in.nextInt(); Car tmp=carArr[xh-1]; selectArr[i-1]=tmp; int tmppop=tmp.getCarryPeople(); int tmpwei=tmp.getCarryWeight(); popnum+=tmppop; weinum+=tmpwei; if(tmppop>0){ pop+=tmp.getName()+" "; } if(tmpwei>0){ wei+=tmp.getName()+" "; } allprice+=tmp.getRent(); } System.out.println("請輸入租車天數:"); double day = in.nextInt(); System.out.println("您的賬單:"); System.out.println("***可載人的車有:"); System.out.println(" "+pop+" 共載人:"+popnum+"人"); System.out.println("***載貨的車有:"); System.out.println(" "+wei+" 共載貨:"+weinum+"頓"); System.out.println("***租車總價格:"+allprice*day+"元"); }else{ initzuche(); } } }
大家看下,有问题找我
-
静态内部类: 1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问 2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员 3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
-
new 一个对象是实例吗? 对,是实例,你说的没错。可以把这个new出来的对象叫做实例,说白了就是这个new出来的“东西”,叫它对象也可以,叫它实例也可以,对象和实例在这个角度上来讲是等价的。 这样: Java中使用 new关键字 加上 构造方法,来创建一个对象,下面是一个名为Cat的类, public class Cat { public Cat() { System.out.println("这是构造方法"); } } 使用new + 构造方法 来创建一个对象,那么也就是 Cat c = new Cat(); 前半部分,Cat c 的意思是,在内存中分配一个变量,名字叫c,这个变量是Cat类型的,它的值是什么? 一会儿在说; 后半部分,new Cat(); 这就是new关键字和构造方法来创建一个对象,Cat()是构造方法的名字没错吧?想造出一个对象来,就这么写,语法规定的,没有为什么; new Cat(); 说明 new这个Cat类的一个对象,程序运行的时候,会调用构造方法Cat(),等这个构造方法执行完了,这个Cat类型的对象也就造出来了,真正的出现在内存当中了; 使用new关键字造出来的对象,被分配在内存的堆区(heap),而且等这个对象真正出来之后,还会做一件重要的事情: 我们这个对象是被分配在内存中的,那么内存地方大了,这个对象在哪里呢?怎么找到它呢?new关键字创建出一个对象之后,会把这个对象在内存中的地址返回,通过这个地址就可以找到这个对象,那么我们上面的写法, Cat c = new Cat(); 意思就是说,把这个对象在内存中的地址 赋值 给变量c,这就是Java中引用概念,c就叫做引用,或者叫引用变量,或者直接叫变量,没问题,都是它; c的值就是一个内存地址,或者叫引用地址,通过这个地址,就可以准确的找到我们刚才创建出来的对象,以后我们要使用这个对象做一些事情,调用此对象的方法什么的,都用过这个引用,ok? ---- 注意,我再说一遍,好多人都搞不清楚,这个c到底是对象还是引用,好多人说c就是Cat类的一个实例,这是非常错误的,c就是引用,不是对象!我们new出来的这个东西,真正在内存中的这个东西叫做对象,叫做实例 个人理解:对象是内存中类的属性集合,变量是这个集合在内存中的引用地址
00:57
-
面向对象的三大特性:封装、继承、多态 封装: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 好处:只能通过规定的方法访问数据;隐藏类的实例细节,方便修改和实现。 封装实现方法:1)、修改属性可见性。2)、创建getter\setter方法。3)、在getter\setter中加入属性控制语句(对属性值的合法性进行判断)。 封装 : 1.类变成private float screen; 2. 加get/set public float getScreen(){ return screen; } public void setScreen(float newScreen){ screen=newScreen; } 3. main调用: phone.setscreen(6.0f); System.out.printly(phone.getScreen()); 好处:只能通过规定的方法访问数据;隐藏类的实例细节,方便修改和实现。
01:53
-
父类
Car
<!--此处有图片-->
子类
PassengerCar
<!--此处有图片-->
Pickup
<!--此处有图片-->
Truck
<!--此处有图片-->
主程序
Tset
<!--此处有图片-->
<!--此处有图片-->
<!--此处有图片-->
-
super关键字的应用: 1.子类的构造过程中必须调用其父类的构造方法 2.如果子类的构造方法没有显示调用父类的构造方法,则系统会默认调用父类的无参构造方法。 3.如果显示的调用构造方法,必须在子类的构造方法的第一行,super()。 4.如果子类的构造方法中既没有显示调用父类的构造方法,父类又没有无参的构造方法,则编译就会报错
-
-
-
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 好处:1、只能通过规定的方法访问数据。 2、隐藏类的实例细节,方便修改和实现 封装的步骤:1、修改属性的可见性,设为private 2、创建个getter/setter方法用于属性的读写 3、在getter/setter方法中加入属性控制语句,对属性值的合法性进行判断 众所周知,JAVA是面向对象的一门语言,每个对象都有各自的属性和方法.但是有的属性涉及安全因素或秘密因素不能让外面的程序调用,所以就用到了private, 经过它定义的变量只能在此对象内部调用,外部程序就无法调用,也就是说只能供其自身调用,比如某个人是一个对象,那么他的血液就肯定是私有变量,只能供其自身调用来维持人的状态.而如果将血液定义成public(公共的)的话,随便其他人都可以改变他血液的状态,你随便把他的血液值设为逆流,那他不就挂了.
-
从对象的内存角度来理解. 假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,里面的变量需要占用0.5M内存. 现在通过代码来看看内存的分配情况: 2.f = new Father();//系统将分配1M内存. Son s = new Son();//系统将分配1.5M内存!因为子类中有一个隐藏的引用super会指向父类实例,所以在实例化子类之前会先实例化一个父类,也就是说会先执行父类的构造函数.由于s中包含了父类的实例,所以s可以调用父类的方法. 3.Son s1 = s;//s1指向那1.5M的内存. Father f1 = (Father)s;//这时f1会指向那1.5M内存中的1M内存,即是说,f1只是指向了s中实例的父类实例对象,所以f1只能调用父类的方法(存储在1M内存中),而不能调用子类的方法(存储在0.5M内存中). Son s2 = (Son)f;//这句代码运行时会报ClassCastException.因为f中只有1M内存,而子类的引用都必须要有1.5M的内存,所以无法转换. Son s3 = (Son)f1;//这句可以通过运行,这时s3指向那1.5M的内存.由于f1是由s转换过来的,所以它是有1.5M的内存的,只是它指向的只有1M内存.
-
1.方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。 2.方法内部类使用时,在方法中创建内部类对象,用对象调用其内部类中的方法。 注:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
-
1、继承的概念:继承是类与类的一种关系;Java中的继承是单继承,只有一个父类。 2、继承的好处:子类直接拥有父亲的所有属性和方法。---private实现的无效! 代码可复用。 class 子类 extends 父类{……}
-
举报
0/150
提交
取消