「JAVA继承性案例」java中继承类
今天给各位分享JAVA继承性案例的知识,其中也会对java中继承类进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Java 继承的实例
class parent{
parent(){
xxx
}
}
class son extends parent{
}
最简单的就是这样的
希望有帮助!
求JAVA封装和继承案例?
封装性是整个面向对象的第一大特性,所谓的封装性是指类内部的操作对外部不可见。
范例:观察如下的程序问题
class Person { // 类名称的单词首字母必须大写
String name ; // 姓名,是一个字符串所以使用String
int age ; // 年龄是一个整数,所以使用int
public void tell(){ // 定义一个方法
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.name = "张三" ;
per.age = -30 ;
per.tell() ;
}
}
此时的程序从技术(语法)上而言没有任何的问题,但是从实际的生活(业务)上来看,一个人的年龄绝对不可能是-30岁,所以这个时候造成问题的主要原因就是类中的操作对外部可见。
此时,就可以通过封装性来解决此类问题,如果现在要想对类中的属性或方法封装,可以直接使用private关键字完成。
class Person { // 类名称的单词首字母必须大写
private String name ; // 姓名,是一个字符串所以使用String
private int age ; // 年龄是一个整数,所以使用int
public void tell(){ // 定义一个方法
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.name = "张三" ;
per.age = 99999 ;
per.tell() ;
}
}
此时,程序编译之后出现了以下的错误信息:
ClassDemo.java:11: name has private access in Person
per.name = "张三" ;
^
ClassDemo.java:12: age has private access in Person
per.age = 99999 ;
^
2 errors
由于name和age两个属性被private声明了(封装了,私有)所以,现在根本无法被外部所访问,很明显,此时的属性绝对安全,但是封装归封装了,一个问题就出现了,现在的属性无法操作了,无法操作就没有意义了,所以此时,就可以给出一个概念,以后凡是类中的属性在定义的时候必须封装,封装之后的属性一定要通过setter、getter方法设置和取得。Setter和getter方法本身有自己的命名规范。
• 例如:private String name ;
• setter:public void setName(String na)
• getter:public String getName()
class Person { // 类名称的单词首字母必须大写
private String name ; // 姓名,是一个字符串所以使用String
private int age ; // 年龄是一个整数,所以使用int
public void setName(String n){
name = n ;
}
public void setAge(int a){
age = a ;
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public void tell(){ // 定义一个方法
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.setName("张三") ;
per.setAge(99999) ;
per.tell() ;
}
}
此时,虽然是通过setter和getter方法间接的访问了私有属性,但是却没有检验,一旦需要检验,则检验的操作应该放在setter语句之中。
所有的设置应该在setter中完成,而getter方法只是将内容简单的返回即可。
class Person { // 类名称的单词首字母必须大写
private String name ; // 姓名,是一个字符串所以使用String
private int age ; // 年龄是一个整数,所以使用int
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a0 a200){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
public void tell(){ // 定义一个方法
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}
public class ClassDemo {
public static void main(String args[]){
Person per = new Person() ;
per.setName("张三") ;
per.setAge(99) ;
per.tell() ;
}
}
此时,就通过封装性解决了设置错误内容的问题。
一定要注意的是,封装性出了在属性声明上外,也可以在方法上声明。
private void info(){ // 私有方法
System.out.println("*************************") ;
}
public void tell(){ // 定义一个方法
this.info() ;
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
如果现在调用的是本类中的方法,可以通过“this.方法()”的形式访问。
java继承关系例子
我可以给你举一个,既能练习继承,又能理解多态:
比如说各种银行卡,它们应该有一个共同的父类‘卡’,但是每种卡的利率啊,消费优惠啊,能否透支啊等等是不一样的。当你消费划卡时,写一个用父类对象做参数的方法,但是传进子类的对象,试试效果吧。
java中有什么子类继承父类的实例?
class A\x0d\x0a{\x0d\x0a int x=12;//被继承\x0d\x0a static double y=34;//被继承\x0d\x0a final int xx=123;//被继承,不能修改xx的值,一经初始化就被看作常量使用\x0d\x0a private float r=12.0f;//不能被继承\x0d\x0a A()//不能被继承\x0d\x0a {\x0d\x0a //====构造方法体\x0d\x0a }\x0d\x0a public void f(){}//被继承\x0d\x0a protected void d(){}//被继承\x0d\x0a private void k(){}//不能被继承\x0d\x0a final void gg(){}//被继承,不能被覆盖\x0d\x0a void w(){}//被继承\x0d\x0a//也就是说构造函数和被关键字private修饰的东西都不能被继承 \x0d\x0a}\x0d\x0aclass B extends A\x0d\x0a{\x0d\x0a //========\x0d\x0a //=======\x0d\x0a //A的类体\x0d\x0a}
设计一个同时用到多态、继承、封装的JAVA案例,要简单的
我来给你举个例子吧,共有两个类,一个基本信息类,实现其实信息类中属性的封装及多态性,一个学生类实现对基本信息类的继承以及自有属性的封装。最后给出测试的结果
//基本信息类,实现了对属性name和age的封装,和构造函数的多态
public class BasicInfo {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public BasicInfo() {
super();
name = "张三";
age = 18;
}
public BasicInfo(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "BasicInfo [name=" + name + ", age=" + age + "]";
}
}
//Student类从BasicInfo类继承而来,构造函数同样具有多态性,并对属性school进行了封装
public class Student extends BasicInfo{
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public Student(String school) {
super();
this.school = school;
}
public Student() {
super();
school ="英国克莱登大学";
}
public Student(String name, int age) {
super(name, age);
school ="英国克莱登大学";
}
@Override
public String toString() {
return "Student [school=" + school + ",name="+getName()+",age="+getAge()+"]";
}
}
//测试
public static void main(String[] s){
Student student = new Student();
//我们在这里 只是一句简单的调用构造函数
System.out.println(student);
//但是输出确有详细的内容
//Student [school=英国克莱登大学,name=张三,age=18]
//也可以像以下方式调用
student = new Student("清华大学");
System.out.println(student);
//Student [school=清华大学,name=张三,age=18]
student = new Student("李四", 20);
student.setSchool("北京大学");
System.out.println(student);
//Student [school=北京大学,name=李四,age=20]
}
JAVA继承性案例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中继承类、JAVA继承性案例的信息别忘了在本站进行查找喔。
发布于:2022-12-05,除非注明,否则均为
原创文章,转载请注明出处。