本文目錄一覽:
java程序編寫
這個問題和多態有着直接關係,首先封裝兩個類,貓類和狗類,定義好屬性和值,定義行為,吃,跑,跳等,再新建一個方法實現他們,具體多態只是可以參考下面解釋。
Java的多態是java要實現的多種形式
一、實現多態的三個條件(前提條件,向上轉型、向下轉型)
1、繼承的存在;(繼承是多態的基礎,沒有繼承就沒有多態)
2、子類重寫父類的方法。(多態下會調用子類重寫後的方法)
3、父類引用變量指向子類對象。(涉及子類到父類的類型轉換)
向上轉型 Student person = new Student()
將一個父類的引用指向一個子類對象,成為向上轉型,自動進行類型轉換。此時通過父類引用變量調用的方法是子類覆蓋或繼承父類的方法,而不是父類的方法此時通過父類引用變量無法調用子類特有的方法。
向下轉型 Student stu = (Student)person;
將一個指向子類對象的引用賦給一個子類的引用,成為向下轉型,此時必須進行強制類型轉換。向下轉型必須轉換為父類引用指向的真實子類類型,,否則將出現ClassCastException,不是任意的強制轉換
向下轉型時可以結合使用instanceof運算符進行強制類型轉換,比如出現轉換異常—ClassCastException
關於java的基礎知識學習,一定要多看視頻 多看視頻 多看視頻 重要的事情說三遍,因為視頻不會使學習變得枯燥,推薦b站上高淇講得還不錯,可以看看視頻了解一下什麼是java中的多態。
二、多態(Polymorphism)按字面的意思就是「多種狀態」。在面向對象語言中,接口的多種不同的實現方式即為多態。引用Charlie Calverts對多態的描述——多態性是允許你將父對象設置成為一個或更多的他的子對象相等的技術,賦值之後,
1.把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。
2.賦值之後,父類型的引用就可以根據當前賦值給它的子對象的特性以不同的方式運作。也就是說,父親的行為像兒子,而不是兒子的行為像父親。
3.比如從某個基類派生出多個子類,其基類有一個虛方法Tdoit,然後其子類也有這個方法,但行為不同,然後這些子類對象中的任何一個可以賦給其基類對象的引用,或者說將子對象地址賦給基類指針,這樣其基類的對象就可以執行不同的操作了。
4.實際上你是在通過其基類的引用來訪問其子類對象的,你要做的就是一個賦值操作。
5.使用繼承性的結果就是當創建了一個類的家族,在認識這個類的家族時,就是把子類的對象當作基類的對象,這種認識又叫作upcasting(向上轉型)。這樣認識的重要性在於:我們可以只針對基類寫出一段程序,但它可以適應於這個類的家族,
6.因為編譯器會自動找出合適的對象來執行操作。這種現象又稱為多態性。而實現多態性的手段又叫稱動態綁定(dynamic binding)。
7.父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作(摘自「Delphi4 編程技術內幕」)。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。多態性在Object Pascal和C++中都是通過虛函數實現的。
8.多態指同一個實體同時具有多種形式。它是面向對象程序設計(OOP)的一個重要特徵。如果一個語言只支持類而不支持多態,只能說明它是基於對象的,而不是面向對象的。C++中的多態性具體體現在運行和編譯兩個方面。
9.運行時多態是動態多態,其具體引用的對象在運行時才能確定。編譯時多態是靜態多態,在編譯時就可以確定對象使用的形式。
10.多態:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。
C++中,實現多態有以下方法:虛函數,抽象類,覆蓋,模板(重載和多態無關)。
OC中的多態:不同對象對同一消息的不同響應.子類可以重寫父類的方法
多態就是允許方法重名 參數或返回值可以是父類型傳入或返回。
編寫一個JAVA類與對象程序 求一參考
//學生類
class Student{
private String name; //姓名
private int age; //年齡
public Student(){
}
public Student(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return this.age;
}
public void setAge(int age){
this.age = age;
}
public void study(){
System.out.println(“普通學生的學習方法”);
}
}
//本科生類
class Undergraduate extends Student{
private String specialty; //專業
public Undergraduate(){
}
public Undergraduate(String name, int age, String specialty){
super(name, age);
this.specialty = specialty;
}
public String getSpecialty(){
return this.specialty;
}
public void setSpecialty(){
this.specialty = specialty;
}
public void study(){
System.out.println(“研究生的學習方法”);
}
}
//研究生類
class Postgraduate extends Student{
private String studydirection; //研究方向
public Postgraduate(){
}
public Postgraduate(String name, int age, String studydirection){
super(name, age);
this.studydirection = studydirection;
}
public String getStudydirection(){
return this.studydirection;
}
public void setStudydirection(){
this.studydirection = studydirection;
}
public void study(){
System.out.println(“本科生的學習方法”);
}
}
public class Test01 {
public static void main(String[] args) {
int i;
Student[] stus = new Student[5];
stus[0] = new Student(“張三其”, 17);
stus[1] = new Student(“李師煊”, 18);
stus[2] = new Postgraduate(“王五”, 25, “軟件工程”);
stus[3] = new Postgraduate(“趙六”, 24, “計算機應用”);
stus[4] = new Undergraduate(“馬七”, 20, “軟件技術”);
for(i=0; istus.length; i++){
System.out.println(“姓名:” + stus[i].getName());
}
Student stu = new Postgraduate(“吳仁”, 24, “圖形圖像”); //父類引用指向子類對象
stu.study(); //動態多態
}
}
輸出:
姓名:張三其
姓名:李師煊
姓名:王五
姓名:趙六
姓名:馬七
本科生的學習方法
JAVA程序題~關於類和對象?
所謂對象就是真實世界中的實體,對象與實體是一一對應的,也就是說現實世界中每一個實體都是一個對象,它是一種具體的概念。類是具備某些共同特徵的實體的集合,它是一種抽象的概念,用程序設計的語言來說,類是一種抽象的數據類型,它是對所具有相同特徵實體的抽象。
利用學過的Java類與對象知識,按以下要求編寫程序
package com.example.demo;
public class Animal {
private String name;
private String gender;
public Animal() {
}
public Animal(String name, String gender) {
this.name = name;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return “Animal{” +
“name='” + name + ‘\” +
“, gender='” + gender + ‘\” +
‘}’;
}
}
class Fish extends Animal {
private int age;
public Fish() {
super();
}
public Fish(String name, String gender, int age) {
super(name, gender);
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return “我是:” + super.getName() + “,性別:” + super.getGender() + “,今年:”+ getAge() + “歲。”;
}
}
class Test {
public static void main(String[] args) {
Fish fish = new Fish(“僵小魚”,”男”, 3);
System.out.println(fish.toString());
}
}
java對象和類的一個程序
很基礎的一些東西,代碼直接貼上了:
public class Cat {
public static final String prompt=”新來了一隻貓咪!它還沒有名字”;
public static final String prompt2=”新來了一隻貓咪!他叫”;
public static final String record=”修改了小貓的名字”;
private String name;
public Cat() {
System.out.println(prompt);
}
public Cat(String name) {
this.name = name;
if (null==name){
System.out.println(prompt);
}else {
StringBuilder prompt = new StringBuilder();
System.out.println(prompt.append(prompt2).append(name));
}
}
public void name(String name){
System.out.println(record+”原來是:”+this.getName()+”,修改後是:”+name);
this.setName(name);
}
public static void main(String[] args) {
final Cat cat = new Cat(“小花”);
final Cat cat1 = new Cat();
cat.name(“小布”);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/298062.html